[llvm] [PowerPC] Optimize allocation of Conditional Register (PR #69299)
Kai Luo via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 20 19:17:25 PST 2023
https://github.com/bzEq updated https://github.com/llvm/llvm-project/pull/69299
>From 13c0efffffe7e25e920e7995436bee3edb880e62 Mon Sep 17 00:00:00 2001
From: Kai Luo <lkail at cn.ibm.com>
Date: Tue, 17 Oct 2023 08:18:24 +0000
Subject: [PATCH 1/5] Adjust CR allocation
---
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | 57 +++++++++++++++++++--
1 file changed, 52 insertions(+), 5 deletions(-)
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
index 7d913a77cc71550..28d9d09353a6382 100644
--- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -565,6 +565,8 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
const VirtRegMap *VRM,
const LiveRegMatrix *Matrix) const {
const MachineRegisterInfo *MRI = &MF.getRegInfo();
+ const PPCSubtarget &Subtarget = MF.getSubtarget<PPCSubtarget>();
+ const TargetRegisterInfo *TRI = Subtarget.getRegisterInfo();
// Call the base implementation first to set any hints based on the usual
// heuristics and decide what the return value should be. We want to return
@@ -582,15 +584,20 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
if (MF.getSubtarget<PPCSubtarget>().isISAFuture())
return BaseImplRetVal;
- // We are interested in instructions that copy values to ACC/UACC.
- // The copy into UACC will be simply a COPY to a subreg so we
- // want to allocate the corresponding physical subreg for the source.
- // The copy into ACC will be a BUILD_UACC so we want to allocate
- // the same number UACC for the source.
+ MachineBasicBlock *LastUseMBB = nullptr;
+ bool UseInOneMBB = true;
const TargetRegisterClass *RegClass = MRI->getRegClass(VirtReg);
for (MachineInstr &Use : MRI->reg_nodbg_instructions(VirtReg)) {
+ if (LastUseMBB && Use.getParent() != LastUseMBB)
+ UseInOneMBB = false;
+ LastUseMBB = Use.getParent();
const MachineOperand *ResultOp = nullptr;
Register ResultReg;
+ // We are interested in instructions that copy values to ACC/UACC.
+ // The copy into UACC will be simply a COPY to a subreg so we
+ // want to allocate the corresponding physical subreg for the source.
+ // The copy into ACC will be a BUILD_UACC so we want to allocate
+ // the same number UACC for the source.
switch (Use.getOpcode()) {
case TargetOpcode::COPY: {
ResultOp = &Use.getOperand(0);
@@ -628,6 +635,46 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
}
}
}
+
+ // In single MBB, allocate different CRs for different definitions can improve
+ // performance.
+ if (UseInOneMBB && LastUseMBB &&
+ (RegClass->hasSuperClassEq(&PPC::CRRCRegClass) ||
+ RegClass->hasSuperClassEq(&PPC::CRBITRCRegClass))) {
+ std::set<MCPhysReg> ModifiedRegisters;
+ bool Skip = true;
+ // Scan from the last instruction writes VirtReg to the beginning of the
+ // MBB.
+ for (MachineInstr &MI :
+ llvm::make_range(LastUseMBB->rbegin(), LastUseMBB->rend())) {
+ if (MI.isDebugInstr())
+ continue;
+ if (MI.modifiesRegister(VirtReg, TRI))
+ Skip = false;
+ if (Skip)
+ continue;
+ for (MachineOperand &MO : MI.operands()) {
+ if (!MO.isReg() || !MO.getReg() || !MO.getReg().isVirtual() ||
+ !MO.isDef())
+ continue;
+ MCPhysReg PhysReg = VRM->getPhys(MO.getReg());
+ if (PhysReg == VirtRegMap::NO_PHYS_REG)
+ continue;
+ llvm::copy_if(
+ TRI->superregs_inclusive(PhysReg),
+ std::inserter(ModifiedRegisters, ModifiedRegisters.begin()),
+ [&](MCPhysReg SR) { return PPC::CRRCRegClass.contains(SR); });
+ }
+ }
+ llvm::copy_if(llvm::make_range(Order.begin(), Order.end()),
+ std::back_inserter(Hints), [&](MCPhysReg Reg) {
+ return llvm::all_of(TRI->superregs_inclusive(Reg),
+ [&](MCPhysReg SR) {
+ return !ModifiedRegisters.count(SR);
+ });
+ });
+ }
+
return BaseImplRetVal;
}
>From c5c7e28d712e21e2d18b834eaf7357d30c2b8628 Mon Sep 17 00:00:00 2001
From: Kai Luo <lkail at cn.ibm.com>
Date: Tue, 17 Oct 2023 09:57:44 +0000
Subject: [PATCH 2/5] Minor
---
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
index 28d9d09353a6382..3c27e82fb6cb9fb 100644
--- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -655,11 +655,9 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
continue;
for (MachineOperand &MO : MI.operands()) {
if (!MO.isReg() || !MO.getReg() || !MO.getReg().isVirtual() ||
- !MO.isDef())
+ !MO.isDef() || !VRM->hasPhys(MO.getReg()))
continue;
MCPhysReg PhysReg = VRM->getPhys(MO.getReg());
- if (PhysReg == VirtRegMap::NO_PHYS_REG)
- continue;
llvm::copy_if(
TRI->superregs_inclusive(PhysReg),
std::inserter(ModifiedRegisters, ModifiedRegisters.begin()),
@@ -668,6 +666,10 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
}
llvm::copy_if(llvm::make_range(Order.begin(), Order.end()),
std::back_inserter(Hints), [&](MCPhysReg Reg) {
+ // if (TRI->regsOverlap(Reg, PPC::CR2) ||
+ // TRI->regsOverlap(Reg, PPC::CR3) ||
+ // TRI->regsOverlap(Reg, PPC::CR4))
+ // return false;
return llvm::all_of(TRI->superregs_inclusive(Reg),
[&](MCPhysReg SR) {
return !ModifiedRegisters.count(SR);
>From 8e3f7f6d8d2f660fda4c6fba601f4e653d74808b Mon Sep 17 00:00:00 2001
From: Kai Luo <lkail at cn.ibm.com>
Date: Wed, 18 Oct 2023 02:07:13 +0000
Subject: [PATCH 3/5] Update test checks
---
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | 9 +-
.../CodeGen/PowerPC/2008-10-28-f128-i32.ll | 16 +-
llvm/test/CodeGen/PowerPC/all-atomics.ll | 16 +-
.../PowerPC/builtins-ppc-xlcompat-compare.ll | 22 +-
llvm/test/CodeGen/PowerPC/common-chain.ll | 4 +-
llvm/test/CodeGen/PowerPC/crbit-asm.ll | 24 +-
llvm/test/CodeGen/PowerPC/crbits.ll | 96 +-
.../CodeGen/PowerPC/fp-strict-conv-f128.ll | 20 +-
.../CodeGen/PowerPC/fp-strict-fcmp-spe.ll | 48 +-
llvm/test/CodeGen/PowerPC/fp-strict-fcmp.ll | 528 +++----
llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll | 8 +-
llvm/test/CodeGen/PowerPC/fptoui-be-crash.ll | 4 +-
llvm/test/CodeGen/PowerPC/is_fpclass.ll | 12 +-
llvm/test/CodeGen/PowerPC/p10-spill-creq.ll | 12 +-
.../CodeGen/PowerPC/ppc32-selectcc-i64.ll | 6 +-
llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll | 64 +-
llvm/test/CodeGen/PowerPC/ppc64-P9-vabsd.ll | 4 +-
.../ppcf128-constrained-fp-intrinsics.ll | 20 +-
llvm/test/CodeGen/PowerPC/ppcf128-freeze.mir | 4 +-
llvm/test/CodeGen/PowerPC/pr48388.ll | 4 +-
llvm/test/CodeGen/PowerPC/pr49509.ll | 4 +-
llvm/test/CodeGen/PowerPC/prefer-dqform.ll | 8 +-
llvm/test/CodeGen/PowerPC/pzero-fp-xored.ll | 8 +-
llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll | 12 +-
llvm/test/CodeGen/PowerPC/select.ll | 6 +-
llvm/test/CodeGen/PowerPC/sms-cpy-1.ll | 4 +-
llvm/test/CodeGen/PowerPC/smulfixsat.ll | 4 +-
llvm/test/CodeGen/PowerPC/spe.ll | 12 +-
.../PowerPC/stack-restore-with-setjmp.ll | 14 +-
.../umulo-128-legalisation-lowering.ll | 24 +-
.../PowerPC/urem-seteq-illegal-types.ll | 6 +-
llvm/test/CodeGen/PowerPC/vec-min-max.ll | 14 +-
llvm/test/CodeGen/PowerPC/vec_cmpd_p7.ll | 16 +-
.../PowerPC/vector-popcnt-128-ult-ugt.ll | 1220 ++++++++---------
llvm/test/CodeGen/PowerPC/vsx.ll | 8 +-
35 files changed, 1141 insertions(+), 1140 deletions(-)
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
index 3c27e82fb6cb9fb..7676ded1a1cd33d 100644
--- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -666,10 +666,11 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
}
llvm::copy_if(llvm::make_range(Order.begin(), Order.end()),
std::back_inserter(Hints), [&](MCPhysReg Reg) {
- // if (TRI->regsOverlap(Reg, PPC::CR2) ||
- // TRI->regsOverlap(Reg, PPC::CR3) ||
- // TRI->regsOverlap(Reg, PPC::CR4))
- // return false;
+ // Be conservative not to use callee saved CRs.
+ if (TRI->regsOverlap(Reg, PPC::CR2) ||
+ TRI->regsOverlap(Reg, PPC::CR3) ||
+ TRI->regsOverlap(Reg, PPC::CR4))
+ return false;
return llvm::all_of(TRI->superregs_inclusive(Reg),
[&](MCPhysReg SR) {
return !ModifiedRegisters.count(SR);
diff --git a/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll b/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll
index 0405b25e7fb0328..08c3247ab5391c8 100644
--- a/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll
+++ b/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll
@@ -25,14 +25,14 @@ define i64 @__fixunstfdi(ppc_fp128 %a) nounwind readnone {
; CHECK-NEXT: fcmpu 1, 1, 27
; CHECK-NEXT: lwz 3, 384(1)
; CHECK-NEXT: crand 20, 6, 0
-; CHECK-NEXT: cror 20, 4, 20
+; CHECK-NEXT: cror 24, 4, 20
; CHECK-NEXT: stfd 28, 432(1) # 8-byte Folded Spill
; CHECK-NEXT: stfd 29, 440(1) # 8-byte Folded Spill
; CHECK-NEXT: stfd 30, 448(1) # 8-byte Folded Spill
; CHECK-NEXT: stfd 31, 456(1) # 8-byte Folded Spill
; CHECK-NEXT: stw 4, 404(1)
; CHECK-NEXT: stw 3, 400(1)
-; CHECK-NEXT: bc 4, 20, .LBB0_2
+; CHECK-NEXT: bc 4, 24, .LBB0_2
; CHECK-NEXT: # %bb.1: # %bb5
; CHECK-NEXT: li 3, 0
; CHECK-NEXT: li 4, 0
@@ -106,9 +106,9 @@ define i64 @__fixunstfdi(ppc_fp128 %a) nounwind readnone {
; CHECK-NEXT: fcmpu 1, 29, 0
; CHECK-NEXT: lwz 4, 156(1)
; CHECK-NEXT: crandc 20, 6, 0
-; CHECK-NEXT: cror 20, 5, 20
+; CHECK-NEXT: cror 24, 5, 20
; CHECK-NEXT: addis 3, 3, -32768
-; CHECK-NEXT: bc 12, 20, .LBB0_4
+; CHECK-NEXT: bc 12, 24, .LBB0_4
; CHECK-NEXT: # %bb.3: # %bb1
; CHECK-NEXT: ori 30, 4, 0
; CHECK-NEXT: b .LBB0_5
@@ -230,9 +230,9 @@ define i64 @__fixunstfdi(ppc_fp128 %a) nounwind readnone {
; CHECK-NEXT: fcmpu 1, 31, 0
; CHECK-NEXT: lwz 4, 28(1)
; CHECK-NEXT: crandc 20, 6, 1
-; CHECK-NEXT: cror 20, 4, 20
+; CHECK-NEXT: cror 24, 4, 20
; CHECK-NEXT: addis 3, 3, -32768
-; CHECK-NEXT: bc 12, 20, .LBB0_13
+; CHECK-NEXT: bc 12, 24, .LBB0_13
; CHECK-NEXT: # %bb.12: # %bb2
; CHECK-NEXT: ori 3, 4, 0
; CHECK-NEXT: b .LBB0_13
@@ -285,9 +285,9 @@ define i64 @__fixunstfdi(ppc_fp128 %a) nounwind readnone {
; CHECK-NEXT: fcmpu 1, 31, 0
; CHECK-NEXT: lwz 4, 92(1)
; CHECK-NEXT: crandc 20, 6, 0
-; CHECK-NEXT: cror 20, 5, 20
+; CHECK-NEXT: cror 24, 5, 20
; CHECK-NEXT: addis 3, 3, -32768
-; CHECK-NEXT: bc 12, 20, .LBB0_15
+; CHECK-NEXT: bc 12, 24, .LBB0_15
; CHECK-NEXT: b .LBB0_16
; CHECK-NEXT: .LBB0_15: # %bb3
; CHECK-NEXT: addi 4, 3, 0
diff --git a/llvm/test/CodeGen/PowerPC/all-atomics.ll b/llvm/test/CodeGen/PowerPC/all-atomics.ll
index 093253bf8f6915f..5f1adcc0a7c95aa 100644
--- a/llvm/test/CodeGen/PowerPC/all-atomics.ll
+++ b/llvm/test/CodeGen/PowerPC/all-atomics.ll
@@ -5687,14 +5687,14 @@ define dso_local i64 @atommax8(ptr nocapture noundef %ptr, i64 noundef %val) loc
; AIX32-NEXT: cmplw 5, 30
; AIX32-NEXT: cmpw 1, 5, 30
; AIX32-NEXT: li 7, 5
-; AIX32-NEXT: li 8, 5
+; AIX32-NEXT: cmplw 6, 4, 31
; AIX32-NEXT: stw 5, 56(1)
; AIX32-NEXT: mr 3, 29
; AIX32-NEXT: crandc 20, 5, 2
-; AIX32-NEXT: cmplw 1, 4, 31
-; AIX32-NEXT: crand 21, 2, 5
+; AIX32-NEXT: crand 28, 2, 25
+; AIX32-NEXT: li 8, 5
; AIX32-NEXT: stw 4, 60(1)
-; AIX32-NEXT: cror 20, 21, 20
+; AIX32-NEXT: cror 20, 28, 20
; AIX32-NEXT: isel 5, 5, 30, 20
; AIX32-NEXT: isel 6, 4, 31, 20
; AIX32-NEXT: mr 4, 28
@@ -5708,15 +5708,15 @@ define dso_local i64 @atommax8(ptr nocapture noundef %ptr, i64 noundef %val) loc
; AIX32-NEXT: cmplw 5, 30
; AIX32-NEXT: cmpw 1, 5, 30
; AIX32-NEXT: li 3, 55
+; AIX32-NEXT: cmplw 6, 4, 31
+; AIX32-NEXT: lwz 31, 76(1) # 4-byte Folded Reload
; AIX32-NEXT: lwz 30, 72(1) # 4-byte Folded Reload
; AIX32-NEXT: lwz 29, 68(1) # 4-byte Folded Reload
; AIX32-NEXT: lwz 28, 64(1) # 4-byte Folded Reload
; AIX32-NEXT: crandc 20, 5, 2
-; AIX32-NEXT: cmplw 1, 4, 31
+; AIX32-NEXT: crand 28, 2, 25
; AIX32-NEXT: li 4, 66
-; AIX32-NEXT: lwz 31, 76(1) # 4-byte Folded Reload
-; AIX32-NEXT: crand 21, 2, 5
-; AIX32-NEXT: cror 20, 21, 20
+; AIX32-NEXT: cror 20, 28, 20
; AIX32-NEXT: isel 4, 4, 3, 20
; AIX32-NEXT: li 3, 0
; AIX32-NEXT: addi 1, 1, 80
diff --git a/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-compare.ll b/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-compare.ll
index aeb5e8698d71112..cf43eefb75193a1 100644
--- a/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-compare.ll
+++ b/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-compare.ll
@@ -9,24 +9,24 @@
; RUN: -mcpu=pwr9 < %s | FileCheck %s --check-prefix=CHECK-64
define dso_local signext i32 @test_builtin_ppc_cmprb(i32 %a, i32%b, i32 %c, i32%d) {
-; CHECK-32-LABEL: test_builtin_ppc_cmprb:
-; CHECK-32: # %bb.0: # %entry
-; CHECK-32-NEXT: cmprb 0, 0, 3, 4
-; CHECK-32-NEXT: setb 3, 0
-; CHECK-32-NEXT: cmprb 0, 1, 5, 6
-; CHECK-32-NEXT: setb 4, 0
-; CHECK-32-NEXT: add 3, 3, 4
-; CHECK-32-NEXT: blr
-;
; CHECK-64-LABEL: test_builtin_ppc_cmprb:
; CHECK-64: # %bb.0: # %entry
; CHECK-64-NEXT: cmprb 0, 0, 3, 4
+; CHECK-64-NEXT: cmprb 1, 1, 5, 6
; CHECK-64-NEXT: setb 3, 0
-; CHECK-64-NEXT: cmprb 0, 1, 5, 6
-; CHECK-64-NEXT: setb 4, 0
+; CHECK-64-NEXT: setb 4, 1
; CHECK-64-NEXT: add 3, 3, 4
; CHECK-64-NEXT: extsw 3, 3
; CHECK-64-NEXT: blr
+;
+; CHECK-32-LABEL: test_builtin_ppc_cmprb:
+; CHECK-32: # %bb.0: # %entry
+; CHECK-32-NEXT: cmprb 0, 0, 3, 4
+; CHECK-32-NEXT: cmprb 1, 1, 5, 6
+; CHECK-32-NEXT: setb 3, 0
+; CHECK-32-NEXT: setb 4, 1
+; CHECK-32-NEXT: add 3, 3, 4
+; CHECK-32-NEXT: blr
entry:
%0 = call i32 @llvm.ppc.cmprb(i32 0, i32 %a, i32 %b)
%1 = call i32 @llvm.ppc.cmprb(i32 1, i32 %c, i32 %d)
diff --git a/llvm/test/CodeGen/PowerPC/common-chain.ll b/llvm/test/CodeGen/PowerPC/common-chain.ll
index 5f8c21e30f8fd06..6bbb96afa472546 100644
--- a/llvm/test/CodeGen/PowerPC/common-chain.ll
+++ b/llvm/test/CodeGen/PowerPC/common-chain.ll
@@ -753,8 +753,8 @@ define signext i32 @spill_reduce_succ(ptr %input1, ptr %input2, ptr %output, i64
; CHECK-NEXT: iselgt r7, r6, r7
; CHECK-NEXT: addi r8, r7, -1
; CHECK-NEXT: clrldi r6, r7, 63
-; CHECK-NEXT: cmpldi r8, 3
-; CHECK-NEXT: blt cr0, .LBB7_4
+; CHECK-NEXT: cmpldi cr1, r8, 3
+; CHECK-NEXT: blt cr1, .LBB7_4
; CHECK-NEXT: # %bb.2: # %for.body.preheader.new
; CHECK-NEXT: ld r14, -168(r1) # 8-byte Folded Reload
; CHECK-NEXT: mulli r24, r30, 24
diff --git a/llvm/test/CodeGen/PowerPC/crbit-asm.ll b/llvm/test/CodeGen/PowerPC/crbit-asm.ll
index 617d6ec27b63f5e..3255a39f99fbec8 100644
--- a/llvm/test/CodeGen/PowerPC/crbit-asm.ll
+++ b/llvm/test/CodeGen/PowerPC/crbit-asm.ll
@@ -16,9 +16,9 @@ define zeroext i1 @testi1(i1 zeroext %b1, i1 zeroext %b2) #0 {
; CHECK-NEXT: li 3, 0
; CHECK-NEXT: li 4, 1
; CHECK-NEXT: #APP
-; CHECK-NEXT: crand 20, 20, 1
+; CHECK-NEXT: crand 24, 20, 1
; CHECK-NEXT: #NO_APP
-; CHECK-NEXT: isel 3, 4, 3, 20
+; CHECK-NEXT: isel 3, 4, 3, 24
; CHECK-NEXT: blr
;
; CHECK-NO-ISEL-LABEL: testi1:
@@ -29,9 +29,9 @@ define zeroext i1 @testi1(i1 zeroext %b1, i1 zeroext %b2) #0 {
; CHECK-NO-ISEL-NEXT: li 3, 0
; CHECK-NO-ISEL-NEXT: li 4, 1
; CHECK-NO-ISEL-NEXT: #APP
-; CHECK-NO-ISEL-NEXT: crand 20, 20, 1
+; CHECK-NO-ISEL-NEXT: crand 24, 20, 1
; CHECK-NO-ISEL-NEXT: #NO_APP
-; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB0_1
+; CHECK-NO-ISEL-NEXT: bc 12, 24, .LBB0_1
; CHECK-NO-ISEL-NEXT: blr
; CHECK-NO-ISEL-NEXT: .LBB0_1: # %entry
; CHECK-NO-ISEL-NEXT: addi 3, 4, 0
@@ -53,9 +53,9 @@ define signext i32 @testi32(i32 signext %b1, i32 signext %b2) #0 {
; CHECK-NEXT: li 3, 0
; CHECK-NEXT: li 4, -1
; CHECK-NEXT: #APP
-; CHECK-NEXT: crand 20, 20, 1
+; CHECK-NEXT: crand 24, 20, 1
; CHECK-NEXT: #NO_APP
-; CHECK-NEXT: isel 3, 4, 3, 20
+; CHECK-NEXT: isel 3, 4, 3, 24
; CHECK-NEXT: blr
;
; CHECK-NO-ISEL-LABEL: testi32:
@@ -66,9 +66,9 @@ define signext i32 @testi32(i32 signext %b1, i32 signext %b2) #0 {
; CHECK-NO-ISEL-NEXT: li 3, 0
; CHECK-NO-ISEL-NEXT: li 4, -1
; CHECK-NO-ISEL-NEXT: #APP
-; CHECK-NO-ISEL-NEXT: crand 20, 20, 1
+; CHECK-NO-ISEL-NEXT: crand 24, 20, 1
; CHECK-NO-ISEL-NEXT: #NO_APP
-; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB1_1
+; CHECK-NO-ISEL-NEXT: bc 12, 24, .LBB1_1
; CHECK-NO-ISEL-NEXT: blr
; CHECK-NO-ISEL-NEXT: .LBB1_1: # %entry
; CHECK-NO-ISEL-NEXT: addi 3, 4, 0
@@ -91,9 +91,9 @@ define zeroext i8 @testi8(i8 zeroext %b1, i8 zeroext %b2) #0 {
; CHECK-NEXT: li 3, 0
; CHECK-NEXT: li 4, 1
; CHECK-NEXT: #APP
-; CHECK-NEXT: crand 20, 20, 1
+; CHECK-NEXT: crand 24, 20, 1
; CHECK-NEXT: #NO_APP
-; CHECK-NEXT: isel 3, 4, 3, 20
+; CHECK-NEXT: isel 3, 4, 3, 24
; CHECK-NEXT: blr
;
; CHECK-NO-ISEL-LABEL: testi8:
@@ -104,9 +104,9 @@ define zeroext i8 @testi8(i8 zeroext %b1, i8 zeroext %b2) #0 {
; CHECK-NO-ISEL-NEXT: li 3, 0
; CHECK-NO-ISEL-NEXT: li 4, 1
; CHECK-NO-ISEL-NEXT: #APP
-; CHECK-NO-ISEL-NEXT: crand 20, 20, 1
+; CHECK-NO-ISEL-NEXT: crand 24, 20, 1
; CHECK-NO-ISEL-NEXT: #NO_APP
-; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB2_1
+; CHECK-NO-ISEL-NEXT: bc 12, 24, .LBB2_1
; CHECK-NO-ISEL-NEXT: blr
; CHECK-NO-ISEL-NEXT: .LBB2_1: # %entry
; CHECK-NO-ISEL-NEXT: addi 3, 4, 0
diff --git a/llvm/test/CodeGen/PowerPC/crbits.ll b/llvm/test/CodeGen/PowerPC/crbits.ll
index a682f69a2ceb781..2fc1c1dfcac8ce2 100644
--- a/llvm/test/CodeGen/PowerPC/crbits.ll
+++ b/llvm/test/CodeGen/PowerPC/crbits.ll
@@ -15,27 +15,27 @@
define zeroext i1 @test1(float %v1, float %v2) #0 {
; CHECK-LABEL: test1:
; CHECK: # %bb.0: # %entry
-; CHECK-NEXT: fcmpu 0, 1, 2
; CHECK-NEXT: xxlxor 0, 0, 0
+; CHECK-NEXT: fcmpu 0, 1, 2
+; CHECK-NEXT: fcmpu 6, 2, 2
; CHECK-NEXT: li 3, 1
-; CHECK-NEXT: fcmpu 1, 2, 2
+; CHECK-NEXT: fcmpu 1, 2, 0
; CHECK-NEXT: crnor 20, 3, 0
-; CHECK-NEXT: fcmpu 0, 2, 0
-; CHECK-NEXT: crnor 21, 7, 1
-; CHECK-NEXT: crnand 20, 20, 21
+; CHECK-NEXT: crnor 28, 27, 5
+; CHECK-NEXT: crnand 20, 20, 28
; CHECK-NEXT: isel 3, 0, 3, 20
; CHECK-NEXT: blr
;
; CHECK-NO-ISEL-LABEL: test1:
; CHECK-NO-ISEL: # %bb.0: # %entry
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2
; CHECK-NO-ISEL-NEXT: xxlxor 0, 0, 0
+; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 6, 2, 2
; CHECK-NO-ISEL-NEXT: li 3, 1
-; CHECK-NO-ISEL-NEXT: fcmpu 1, 2, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 1, 2, 0
; CHECK-NO-ISEL-NEXT: crnor 20, 3, 0
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 2, 0
-; CHECK-NO-ISEL-NEXT: crnor 21, 7, 1
-; CHECK-NO-ISEL-NEXT: crnand 20, 20, 21
+; CHECK-NO-ISEL-NEXT: crnor 28, 27, 5
+; CHECK-NO-ISEL-NEXT: crnand 20, 20, 28
; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB0_1
; CHECK-NO-ISEL-NEXT: blr
; CHECK-NO-ISEL-NEXT: .LBB0_1: # %entry
@@ -44,13 +44,13 @@ define zeroext i1 @test1(float %v1, float %v2) #0 {
;
; CHECK-P10-LABEL: test1:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: fcmpu cr0, f1, f2
; CHECK-P10-NEXT: xxlxor f0, f0, f0
-; CHECK-P10-NEXT: fcmpu cr1, f2, f2
+; CHECK-P10-NEXT: fcmpu cr0, f1, f2
+; CHECK-P10-NEXT: fcmpu cr6, f2, f2
+; CHECK-P10-NEXT: fcmpu cr1, f2, f0
; CHECK-P10-NEXT: crnor 4*cr5+lt, un, lt
-; CHECK-P10-NEXT: fcmpu cr0, f2, f0
-; CHECK-P10-NEXT: crnor 4*cr5+gt, 4*cr1+un, gt
-; CHECK-P10-NEXT: crand 4*cr5+lt, 4*cr5+lt, 4*cr5+gt
+; CHECK-P10-NEXT: crnor 4*cr7+lt, 4*cr6+un, 4*cr1+gt
+; CHECK-P10-NEXT: crand 4*cr5+lt, 4*cr5+lt, 4*cr7+lt
; CHECK-P10-NEXT: setbc r3, 4*cr5+lt
; CHECK-P10-NEXT: blr
entry:
@@ -66,27 +66,27 @@ entry:
define zeroext i1 @test2(float %v1, float %v2) #0 {
; CHECK-LABEL: test2:
; CHECK: # %bb.0: # %entry
-; CHECK-NEXT: fcmpu 0, 1, 2
; CHECK-NEXT: xxlxor 0, 0, 0
+; CHECK-NEXT: fcmpu 0, 1, 2
+; CHECK-NEXT: fcmpu 6, 2, 2
; CHECK-NEXT: li 3, 1
-; CHECK-NEXT: fcmpu 1, 2, 2
+; CHECK-NEXT: fcmpu 1, 2, 0
; CHECK-NEXT: crnor 20, 3, 0
-; CHECK-NEXT: fcmpu 0, 2, 0
-; CHECK-NEXT: crnor 21, 7, 1
-; CHECK-NEXT: creqv 20, 20, 21
+; CHECK-NEXT: crnor 28, 27, 5
+; CHECK-NEXT: creqv 20, 20, 28
; CHECK-NEXT: isel 3, 0, 3, 20
; CHECK-NEXT: blr
;
; CHECK-NO-ISEL-LABEL: test2:
; CHECK-NO-ISEL: # %bb.0: # %entry
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2
; CHECK-NO-ISEL-NEXT: xxlxor 0, 0, 0
+; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 6, 2, 2
; CHECK-NO-ISEL-NEXT: li 3, 1
-; CHECK-NO-ISEL-NEXT: fcmpu 1, 2, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 1, 2, 0
; CHECK-NO-ISEL-NEXT: crnor 20, 3, 0
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 2, 0
-; CHECK-NO-ISEL-NEXT: crnor 21, 7, 1
-; CHECK-NO-ISEL-NEXT: creqv 20, 20, 21
+; CHECK-NO-ISEL-NEXT: crnor 28, 27, 5
+; CHECK-NO-ISEL-NEXT: creqv 20, 20, 28
; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB1_1
; CHECK-NO-ISEL-NEXT: blr
; CHECK-NO-ISEL-NEXT: .LBB1_1: # %entry
@@ -95,13 +95,13 @@ define zeroext i1 @test2(float %v1, float %v2) #0 {
;
; CHECK-P10-LABEL: test2:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: fcmpu cr0, f1, f2
; CHECK-P10-NEXT: xxlxor f0, f0, f0
-; CHECK-P10-NEXT: fcmpu cr1, f2, f2
+; CHECK-P10-NEXT: fcmpu cr0, f1, f2
+; CHECK-P10-NEXT: fcmpu cr6, f2, f2
+; CHECK-P10-NEXT: fcmpu cr1, f2, f0
; CHECK-P10-NEXT: crnor 4*cr5+lt, un, lt
-; CHECK-P10-NEXT: fcmpu cr0, f2, f0
-; CHECK-P10-NEXT: crnor 4*cr5+gt, 4*cr1+un, gt
-; CHECK-P10-NEXT: crxor 4*cr5+lt, 4*cr5+lt, 4*cr5+gt
+; CHECK-P10-NEXT: crnor 4*cr7+lt, 4*cr6+un, 4*cr1+gt
+; CHECK-P10-NEXT: crxor 4*cr5+lt, 4*cr5+lt, 4*cr7+lt
; CHECK-P10-NEXT: setbc r3, 4*cr5+lt
; CHECK-P10-NEXT: blr
entry:
@@ -117,30 +117,30 @@ entry:
define zeroext i1 @test3(float %v1, float %v2, i32 signext %x) #0 {
; CHECK-LABEL: test3:
; CHECK: # %bb.0: # %entry
-; CHECK-NEXT: fcmpu 0, 1, 2
; CHECK-NEXT: xxlxor 0, 0, 0
+; CHECK-NEXT: fcmpu 6, 2, 2
+; CHECK-NEXT: fcmpu 0, 1, 2
; CHECK-NEXT: li 3, 1
-; CHECK-NEXT: fcmpu 1, 2, 2
+; CHECK-NEXT: fcmpu 1, 2, 0
; CHECK-NEXT: crnor 20, 3, 0
-; CHECK-NEXT: fcmpu 0, 2, 0
-; CHECK-NEXT: crnor 21, 7, 1
; CHECK-NEXT: cmpwi 5, -2
-; CHECK-NEXT: crandc 21, 21, 2
+; CHECK-NEXT: crnor 28, 27, 5
+; CHECK-NEXT: crandc 21, 28, 2
; CHECK-NEXT: creqv 20, 20, 21
; CHECK-NEXT: isel 3, 0, 3, 20
; CHECK-NEXT: blr
;
; CHECK-NO-ISEL-LABEL: test3:
; CHECK-NO-ISEL: # %bb.0: # %entry
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2
; CHECK-NO-ISEL-NEXT: xxlxor 0, 0, 0
+; CHECK-NO-ISEL-NEXT: fcmpu 6, 2, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2
; CHECK-NO-ISEL-NEXT: li 3, 1
-; CHECK-NO-ISEL-NEXT: fcmpu 1, 2, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 1, 2, 0
; CHECK-NO-ISEL-NEXT: crnor 20, 3, 0
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 2, 0
-; CHECK-NO-ISEL-NEXT: crnor 21, 7, 1
; CHECK-NO-ISEL-NEXT: cmpwi 5, -2
-; CHECK-NO-ISEL-NEXT: crandc 21, 21, 2
+; CHECK-NO-ISEL-NEXT: crnor 28, 27, 5
+; CHECK-NO-ISEL-NEXT: crandc 21, 28, 2
; CHECK-NO-ISEL-NEXT: creqv 20, 20, 21
; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB2_1
; CHECK-NO-ISEL-NEXT: blr
@@ -150,14 +150,14 @@ define zeroext i1 @test3(float %v1, float %v2, i32 signext %x) #0 {
;
; CHECK-P10-LABEL: test3:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: fcmpu cr0, f1, f2
; CHECK-P10-NEXT: xxlxor f0, f0, f0
-; CHECK-P10-NEXT: fcmpu cr1, f2, f2
+; CHECK-P10-NEXT: fcmpu cr0, f1, f2
+; CHECK-P10-NEXT: fcmpu cr6, f2, f2
+; CHECK-P10-NEXT: fcmpu cr1, f2, f0
; CHECK-P10-NEXT: crnor 4*cr5+lt, un, lt
-; CHECK-P10-NEXT: fcmpu cr0, f2, f0
-; CHECK-P10-NEXT: crnor 4*cr5+gt, 4*cr1+un, gt
; CHECK-P10-NEXT: cmpwi r5, -2
-; CHECK-P10-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
+; CHECK-P10-NEXT: crnor 4*cr7+lt, 4*cr6+un, 4*cr1+gt
+; CHECK-P10-NEXT: crandc 4*cr5+gt, 4*cr7+lt, eq
; CHECK-P10-NEXT: crxor 4*cr5+lt, 4*cr5+lt, 4*cr5+gt
; CHECK-P10-NEXT: setbc r3, 4*cr5+lt
; CHECK-P10-NEXT: blr
@@ -275,9 +275,9 @@ define zeroext i1 @test6(i1 zeroext %v1, i1 zeroext %v2, i32 signext %v3) #0 {
; CHECK-P10-NEXT: cmpwi cr1, r5, -2
; CHECK-P10-NEXT: crmove 4*cr5+lt, gt
; CHECK-P10-NEXT: andi. r3, r4, 1
-; CHECK-P10-NEXT: crorc 4*cr5+gt, gt, 4*cr1+eq
-; CHECK-P10-NEXT: crand 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; CHECK-P10-NEXT: setbc r3, 4*cr5+lt
+; CHECK-P10-NEXT: crorc 4*cr6+lt, gt, 4*cr1+eq
+; CHECK-P10-NEXT: crand 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; CHECK-P10-NEXT: setbc r3, 4*cr7+lt
; CHECK-P10-NEXT: blr
entry:
%cmp = icmp ne i32 %v3, -2
diff --git a/llvm/test/CodeGen/PowerPC/fp-strict-conv-f128.ll b/llvm/test/CodeGen/PowerPC/fp-strict-conv-f128.ll
index 988ec6d8cc72bf2..1d667c61450d5f8 100644
--- a/llvm/test/CodeGen/PowerPC/fp-strict-conv-f128.ll
+++ b/llvm/test/CodeGen/PowerPC/fp-strict-conv-f128.ll
@@ -620,10 +620,10 @@ define zeroext i32 @ppcq_to_u32(ppc_fp128 %m) #0 {
; P8-NEXT: lis r3, -32768
; P8-NEXT: fcmpo cr0, f1, f0
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; P8-NEXT: crandc 4*cr5+gt, lt, eq
-; P8-NEXT: cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r30, 0, r3, 4*cr5+lt
-; P8-NEXT: bc 12, 4*cr5+lt, .LBB13_2
+; P8-NEXT: crandc 4*cr6+lt, lt, eq
+; P8-NEXT: cror 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r30, 0, r3, 4*cr7+lt
+; P8-NEXT: bc 12, 4*cr7+lt, .LBB13_2
; P8-NEXT: # %bb.1: # %entry
; P8-NEXT: fmr f3, f0
; P8-NEXT: .LBB13_2: # %entry
@@ -661,10 +661,10 @@ define zeroext i32 @ppcq_to_u32(ppc_fp128 %m) #0 {
; P9-NEXT: lis r3, -32768
; P9-NEXT: fcmpo cr0, f1, f0
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; P9-NEXT: crandc 4*cr5+gt, lt, eq
-; P9-NEXT: cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r30, 0, r3, 4*cr5+lt
-; P9-NEXT: bc 12, 4*cr5+lt, .LBB13_2
+; P9-NEXT: crandc 4*cr6+lt, lt, eq
+; P9-NEXT: cror 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r30, 0, r3, 4*cr7+lt
+; P9-NEXT: bc 12, 4*cr7+lt, .LBB13_2
; P9-NEXT: # %bb.1: # %entry
; P9-NEXT: fmr f3, f0
; P9-NEXT: .LBB13_2: # %entry
@@ -703,9 +703,9 @@ define zeroext i32 @ppcq_to_u32(ppc_fp128 %m) #0 {
; NOVSX-NEXT: fcmpo cr0, f1, f0
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: fmr f3, f4
-; NOVSX-NEXT: crandc 4*cr5+gt, lt, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, lt, eq
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; NOVSX-NEXT: cror 4*cr2+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: cror 4*cr2+lt, 4*cr6+lt, 4*cr5+lt
; NOVSX-NEXT: bc 12, 4*cr2+lt, .LBB13_2
; NOVSX-NEXT: # %bb.1: # %entry
; NOVSX-NEXT: fmr f3, f0
diff --git a/llvm/test/CodeGen/PowerPC/fp-strict-fcmp-spe.ll b/llvm/test/CodeGen/PowerPC/fp-strict-fcmp-spe.ll
index 6aae299786cc7e9..02a861611573e3c 100644
--- a/llvm/test/CodeGen/PowerPC/fp-strict-fcmp-spe.ll
+++ b/llvm/test/CodeGen/PowerPC/fp-strict-fcmp-spe.ll
@@ -33,9 +33,9 @@ define i32 @test_f32_oge_s(i32 %a, i32 %b, float %f1, float %f2) #0 {
; SPE-NEXT: efscmpeq cr0, r6, r6
; SPE-NEXT: efscmpeq cr1, r5, r5
; SPE-NEXT: crand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: efscmplt cr0, r5, r6
-; SPE-NEXT: crandc 4*cr5+lt, 4*cr5+lt, gt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: efscmplt cr6, r5, r6
+; SPE-NEXT: crandc 4*cr7+lt, 4*cr5+lt, 4*cr6+gt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -63,9 +63,9 @@ define i32 @test_f32_ole_s(i32 %a, i32 %b, float %f1, float %f2) #0 {
; SPE-NEXT: efscmpeq cr0, r6, r6
; SPE-NEXT: efscmpeq cr1, r5, r5
; SPE-NEXT: crand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: efscmpgt cr0, r5, r6
-; SPE-NEXT: crandc 4*cr5+lt, 4*cr5+lt, gt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: efscmpgt cr6, r5, r6
+; SPE-NEXT: crandc 4*cr7+lt, 4*cr5+lt, 4*cr6+gt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -126,9 +126,9 @@ define i32 @test_f32_ugt_s(i32 %a, i32 %b, float %f1, float %f2) #0 {
; SPE-NEXT: efscmpeq cr0, r5, r5
; SPE-NEXT: efscmpeq cr1, r6, r6
; SPE-NEXT: crnand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: efscmpgt cr0, r5, r6
-; SPE-NEXT: cror 4*cr5+lt, gt, 4*cr5+lt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: efscmpgt cr6, r5, r6
+; SPE-NEXT: cror 4*cr7+lt, 4*cr6+gt, 4*cr5+lt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -157,9 +157,9 @@ define i32 @test_f32_ult_s(i32 %a, i32 %b, float %f1, float %f2) #0 {
; SPE-NEXT: efscmpeq cr0, r5, r5
; SPE-NEXT: efscmpeq cr1, r6, r6
; SPE-NEXT: crnand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: efscmplt cr0, r5, r6
-; SPE-NEXT: cror 4*cr5+lt, gt, 4*cr5+lt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: efscmplt cr6, r5, r6
+; SPE-NEXT: cror 4*cr7+lt, 4*cr6+gt, 4*cr5+lt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -249,9 +249,9 @@ define i32 @test_f64_oge_s(i32 %a, i32 %b, double %f1, double %f2) #0 {
; SPE-NEXT: efdcmpeq cr0, r6, r6
; SPE-NEXT: efdcmpeq cr1, r5, r5
; SPE-NEXT: efdcmplt cr5, r5, r6
-; SPE-NEXT: crand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: crandc 4*cr5+lt, 4*cr5+lt, 4*cr5+gt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: crand 4*cr6+lt, 4*cr1+gt, gt
+; SPE-NEXT: crandc 4*cr7+lt, 4*cr6+lt, 4*cr5+gt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -283,9 +283,9 @@ define i32 @test_f64_ole_s(i32 %a, i32 %b, double %f1, double %f2) #0 {
; SPE-NEXT: efdcmpeq cr0, r6, r6
; SPE-NEXT: efdcmpeq cr1, r5, r5
; SPE-NEXT: efdcmpgt cr5, r5, r6
-; SPE-NEXT: crand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: crandc 4*cr5+lt, 4*cr5+lt, 4*cr5+gt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: crand 4*cr6+lt, 4*cr1+gt, gt
+; SPE-NEXT: crandc 4*cr7+lt, 4*cr6+lt, 4*cr5+gt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -354,9 +354,9 @@ define i32 @test_f64_ugt_s(i32 %a, i32 %b, double %f1, double %f2) #0 {
; SPE-NEXT: efdcmpeq cr0, r5, r5
; SPE-NEXT: efdcmpeq cr1, r7, r7
; SPE-NEXT: efdcmpgt cr5, r5, r7
-; SPE-NEXT: crnand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: crnand 4*cr6+lt, 4*cr1+gt, gt
+; SPE-NEXT: cror 4*cr7+lt, 4*cr5+gt, 4*cr6+lt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
@@ -389,9 +389,9 @@ define i32 @test_f64_ult_s(i32 %a, i32 %b, double %f1, double %f2) #0 {
; SPE-NEXT: efdcmpeq cr0, r5, r5
; SPE-NEXT: efdcmpeq cr1, r7, r7
; SPE-NEXT: efdcmplt cr5, r5, r7
-; SPE-NEXT: crnand 4*cr5+lt, 4*cr1+gt, gt
-; SPE-NEXT: cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; SPE-NEXT: bclr 12, 4*cr5+lt, 0
+; SPE-NEXT: crnand 4*cr6+lt, 4*cr1+gt, gt
+; SPE-NEXT: cror 4*cr7+lt, 4*cr5+gt, 4*cr6+lt
+; SPE-NEXT: bclr 12, 4*cr7+lt, 0
; SPE-NEXT: # %bb.1:
; SPE-NEXT: ori r3, r4, 0
; SPE-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/fp-strict-fcmp.ll b/llvm/test/CodeGen/PowerPC/fp-strict-fcmp.ll
index af4c051d553eeed..9867a460629c624 100644
--- a/llvm/test/CodeGen/PowerPC/fp-strict-fcmp.ll
+++ b/llvm/test/CodeGen/PowerPC/fp-strict-fcmp.ll
@@ -2660,11 +2660,11 @@ define i32 @fcmp_olt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpu cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: crandc 4*cr5+gt, lt, eq
+; P8-NEXT: crandc 4*cr6+lt, lt, eq
; P8-NEXT: fcmpu cr1, f2, f4
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_olt_ppcf128:
@@ -2673,20 +2673,20 @@ define i32 @fcmp_olt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; P9-NEXT: crandc 4*cr5+gt, lt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, lt, eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmp_olt_ppcf128:
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpu cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: crandc 4*cr5+gt, lt, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, lt, eq
; NOVSX-NEXT: fcmpu cr1, f2, f4
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"olt", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -2699,24 +2699,24 @@ define i32 @fcmp_ole_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: fcmpu cr0, f2, f4
; P8-NEXT: li r3, 1
; P8-NEXT: crnor 4*cr5+lt, un, gt
-; P8-NEXT: fcmpu cr0, f1, f3
-; P8-NEXT: crnor 4*cr5+gt, un, gt
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: fcmpu cr1, f1, f3
+; P8-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+gt
+; P8-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_ole_ppcf128:
; P9: # %bb.0:
; P9-NEXT: fcmpu cr0, f2, f4
+; P9-NEXT: fcmpu cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crnor 4*cr5+lt, un, gt
-; P9-NEXT: fcmpu cr0, f1, f3
-; P9-NEXT: crnor 4*cr5+gt, un, gt
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+gt
+; P9-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -2725,11 +2725,11 @@ define i32 @fcmp_ole_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: fcmpu cr0, f2, f4
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: crnor 4*cr5+lt, un, gt
-; NOVSX-NEXT: fcmpu cr0, f1, f3
-; NOVSX-NEXT: crnor 4*cr5+gt, un, gt
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: fcmpu cr1, f1, f3
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+gt
+; NOVSX-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ole", metadata !"fpexcept.strict") #0
@@ -2742,11 +2742,11 @@ define i32 @fcmp_ogt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpu cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: crandc 4*cr5+gt, gt, eq
+; P8-NEXT: crandc 4*cr6+lt, gt, eq
; P8-NEXT: fcmpu cr1, f2, f4
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+gt
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_ogt_ppcf128:
@@ -2755,20 +2755,20 @@ define i32 @fcmp_ogt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+gt
-; P9-NEXT: crandc 4*cr5+gt, gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, gt, eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmp_ogt_ppcf128:
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpu cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: crandc 4*cr5+gt, gt, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, gt, eq
; NOVSX-NEXT: fcmpu cr1, f2, f4
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+gt
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ogt", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -2781,24 +2781,24 @@ define i32 @fcmp_oge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: fcmpu cr0, f2, f4
; P8-NEXT: li r3, 1
; P8-NEXT: crnor 4*cr5+lt, un, lt
-; P8-NEXT: fcmpu cr0, f1, f3
-; P8-NEXT: crnor 4*cr5+gt, un, lt
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: fcmpu cr1, f1, f3
+; P8-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+lt
+; P8-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_oge_ppcf128:
; P9: # %bb.0:
; P9-NEXT: fcmpu cr0, f2, f4
+; P9-NEXT: fcmpu cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crnor 4*cr5+lt, un, lt
-; P9-NEXT: fcmpu cr0, f1, f3
-; P9-NEXT: crnor 4*cr5+gt, un, lt
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+lt
+; P9-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -2807,11 +2807,11 @@ define i32 @fcmp_oge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: fcmpu cr0, f2, f4
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: crnor 4*cr5+lt, un, lt
-; NOVSX-NEXT: fcmpu cr0, f1, f3
-; NOVSX-NEXT: crnor 4*cr5+gt, un, lt
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: fcmpu cr1, f1, f3
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+lt
+; NOVSX-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"oge", metadata !"fpexcept.strict") #0
@@ -2824,11 +2824,11 @@ define i32 @fcmp_oeq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpu cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: crandc 4*cr5+gt, eq, eq
+; P8-NEXT: crandc 4*cr6+lt, eq, eq
; P8-NEXT: fcmpu cr1, f2, f4
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_oeq_ppcf128:
@@ -2837,20 +2837,20 @@ define i32 @fcmp_oeq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
-; P9-NEXT: crandc 4*cr5+gt, eq, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, eq, eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmp_oeq_ppcf128:
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpu cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: crandc 4*cr5+gt, eq, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, eq, eq
; NOVSX-NEXT: fcmpu cr1, f2, f4
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"oeq", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -2863,24 +2863,24 @@ define i32 @fcmp_one_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: fcmpu cr0, f2, f4
; P8-NEXT: li r3, 1
; P8-NEXT: crnor 4*cr5+lt, un, eq
-; P8-NEXT: fcmpu cr0, f1, f3
-; P8-NEXT: crnor 4*cr5+gt, un, eq
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: fcmpu cr1, f1, f3
+; P8-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+eq
+; P8-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_one_ppcf128:
; P9: # %bb.0:
; P9-NEXT: fcmpu cr0, f2, f4
+; P9-NEXT: fcmpu cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crnor 4*cr5+lt, un, eq
-; P9-NEXT: fcmpu cr0, f1, f3
-; P9-NEXT: crnor 4*cr5+gt, un, eq
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+eq
+; P9-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -2889,11 +2889,11 @@ define i32 @fcmp_one_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: fcmpu cr0, f2, f4
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: crnor 4*cr5+lt, un, eq
-; NOVSX-NEXT: fcmpu cr0, f1, f3
-; NOVSX-NEXT: crnor 4*cr5+gt, un, eq
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: fcmpu cr1, f1, f3
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+eq
+; NOVSX-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"one", metadata !"fpexcept.strict") #0
@@ -2906,12 +2906,12 @@ define i32 @fcmp_ult_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpu cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: cror 4*cr5+gt, lt, un
+; P8-NEXT: cror 4*cr7+lt, lt, un
; P8-NEXT: fcmpu cr1, f2, f4
; P8-NEXT: cror 4*cr5+lt, 4*cr1+lt, 4*cr1+un
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
@@ -2921,10 +2921,10 @@ define i32 @fcmp_ult_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: cror 4*cr5+lt, 4*cr1+lt, 4*cr1+un
-; P9-NEXT: cror 4*cr5+gt, lt, un
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: cror 4*cr7+lt, lt, un
+; P9-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -2932,12 +2932,12 @@ define i32 @fcmp_ult_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpu cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: cror 4*cr5+gt, lt, un
+; NOVSX-NEXT: cror 4*cr7+lt, lt, un
; NOVSX-NEXT: fcmpu cr1, f2, f4
; NOVSX-NEXT: cror 4*cr5+lt, 4*cr1+lt, 4*cr1+un
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ult", metadata !"fpexcept.strict") #0
@@ -2952,9 +2952,9 @@ define i32 @fcmp_ule_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: li r3, 1
; P8-NEXT: fcmpu cr1, f1, f3
; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, gt
-; P8-NEXT: crnor 4*cr5+gt, 4*cr1+gt, 4*cr1+eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr6+lt, 4*cr1+gt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_ule_ppcf128:
@@ -2963,9 +2963,9 @@ define i32 @fcmp_ule_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, gt
-; P9-NEXT: crnor 4*cr5+gt, 4*cr1+gt, 4*cr1+eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crnor 4*cr6+lt, 4*cr1+gt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmp_ule_ppcf128:
@@ -2974,9 +2974,9 @@ define i32 @fcmp_ule_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: fcmpu cr1, f1, f3
; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, gt
-; NOVSX-NEXT: crnor 4*cr5+gt, 4*cr1+gt, 4*cr1+eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr6+lt, 4*cr1+gt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ule", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -2988,12 +2988,12 @@ define i32 @fcmp_ugt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpu cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: cror 4*cr5+gt, gt, un
+; P8-NEXT: cror 4*cr7+lt, gt, un
; P8-NEXT: fcmpu cr1, f2, f4
; P8-NEXT: cror 4*cr5+lt, 4*cr1+gt, 4*cr1+un
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
@@ -3003,10 +3003,10 @@ define i32 @fcmp_ugt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: cror 4*cr5+lt, 4*cr1+gt, 4*cr1+un
-; P9-NEXT: cror 4*cr5+gt, gt, un
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: cror 4*cr7+lt, gt, un
+; P9-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3014,12 +3014,12 @@ define i32 @fcmp_ugt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpu cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: cror 4*cr5+gt, gt, un
+; NOVSX-NEXT: cror 4*cr7+lt, gt, un
; NOVSX-NEXT: fcmpu cr1, f2, f4
; NOVSX-NEXT: cror 4*cr5+lt, 4*cr1+gt, 4*cr1+un
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ugt", metadata !"fpexcept.strict") #0
@@ -3034,9 +3034,9 @@ define i32 @fcmp_uge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: li r3, 1
; P8-NEXT: fcmpu cr1, f1, f3
; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, lt
-; P8-NEXT: crnor 4*cr5+gt, 4*cr1+lt, 4*cr1+eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr6+lt, 4*cr1+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_uge_ppcf128:
@@ -3045,9 +3045,9 @@ define i32 @fcmp_uge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, lt
-; P9-NEXT: crnor 4*cr5+gt, 4*cr1+lt, 4*cr1+eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crnor 4*cr6+lt, 4*cr1+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmp_uge_ppcf128:
@@ -3056,9 +3056,9 @@ define i32 @fcmp_uge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: fcmpu cr1, f1, f3
; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, lt
-; NOVSX-NEXT: crnor 4*cr5+gt, 4*cr1+lt, 4*cr1+eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr6+lt, 4*cr1+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"uge", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3070,12 +3070,12 @@ define i32 @fcmp_ueq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpu cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: cror 4*cr5+gt, eq, un
+; P8-NEXT: cror 4*cr7+lt, eq, un
; P8-NEXT: fcmpu cr1, f2, f4
; P8-NEXT: cror 4*cr5+lt, 4*cr1+eq, 4*cr1+un
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
@@ -3085,10 +3085,10 @@ define i32 @fcmp_ueq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: cror 4*cr5+lt, 4*cr1+eq, 4*cr1+un
-; P9-NEXT: cror 4*cr5+gt, eq, un
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: cror 4*cr7+lt, eq, un
+; P9-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3096,12 +3096,12 @@ define i32 @fcmp_ueq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpu cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: cror 4*cr5+gt, eq, un
+; NOVSX-NEXT: cror 4*cr7+lt, eq, un
; NOVSX-NEXT: fcmpu cr1, f2, f4
; NOVSX-NEXT: cror 4*cr5+lt, 4*cr1+eq, 4*cr1+un
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ueq", metadata !"fpexcept.strict") #0
@@ -3116,8 +3116,8 @@ define i32 @fcmp_une_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: li r3, 1
; P8-NEXT: fcmpu cr1, f1, f3
; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, eq
-; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crandc 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr6+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmp_une_ppcf128:
@@ -3126,8 +3126,8 @@ define i32 @fcmp_une_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpu cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, eq
-; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr6+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmp_une_ppcf128:
@@ -3136,8 +3136,8 @@ define i32 @fcmp_une_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: fcmpu cr1, f1, f3
; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, eq
-; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr6+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmp.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"une", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3149,11 +3149,11 @@ define i32 @fcmps_olt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpo cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: crandc 4*cr5+gt, lt, eq
+; P8-NEXT: crandc 4*cr6+lt, lt, eq
; P8-NEXT: fcmpo cr1, f2, f4
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_olt_ppcf128:
@@ -3162,20 +3162,20 @@ define i32 @fcmps_olt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; P9-NEXT: crandc 4*cr5+gt, lt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, lt, eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmps_olt_ppcf128:
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpo cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: crandc 4*cr5+gt, lt, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, lt, eq
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"olt", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3188,24 +3188,24 @@ define i32 @fcmps_ole_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: fcmpo cr0, f2, f4
; P8-NEXT: li r3, 1
; P8-NEXT: crnor 4*cr5+lt, un, gt
-; P8-NEXT: fcmpo cr0, f1, f3
-; P8-NEXT: crnor 4*cr5+gt, un, gt
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: fcmpo cr1, f1, f3
+; P8-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+gt
+; P8-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_ole_ppcf128:
; P9: # %bb.0:
; P9-NEXT: fcmpo cr0, f2, f4
+; P9-NEXT: fcmpo cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crnor 4*cr5+lt, un, gt
-; P9-NEXT: fcmpo cr0, f1, f3
-; P9-NEXT: crnor 4*cr5+gt, un, gt
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+gt
+; P9-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3214,11 +3214,11 @@ define i32 @fcmps_ole_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: fcmpo cr0, f2, f4
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: crnor 4*cr5+lt, un, gt
-; NOVSX-NEXT: fcmpo cr0, f1, f3
-; NOVSX-NEXT: crnor 4*cr5+gt, un, gt
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: fcmpo cr1, f1, f3
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+gt
+; NOVSX-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ole", metadata !"fpexcept.strict") #0
@@ -3231,11 +3231,11 @@ define i32 @fcmps_ogt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpo cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: crandc 4*cr5+gt, gt, eq
+; P8-NEXT: crandc 4*cr6+lt, gt, eq
; P8-NEXT: fcmpo cr1, f2, f4
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+gt
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_ogt_ppcf128:
@@ -3244,20 +3244,20 @@ define i32 @fcmps_ogt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+gt
-; P9-NEXT: crandc 4*cr5+gt, gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, gt, eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmps_ogt_ppcf128:
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpo cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: crandc 4*cr5+gt, gt, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, gt, eq
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+gt
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ogt", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3270,24 +3270,24 @@ define i32 @fcmps_oge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: fcmpo cr0, f2, f4
; P8-NEXT: li r3, 1
; P8-NEXT: crnor 4*cr5+lt, un, lt
-; P8-NEXT: fcmpo cr0, f1, f3
-; P8-NEXT: crnor 4*cr5+gt, un, lt
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: fcmpo cr1, f1, f3
+; P8-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+lt
+; P8-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_oge_ppcf128:
; P9: # %bb.0:
; P9-NEXT: fcmpo cr0, f2, f4
+; P9-NEXT: fcmpo cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crnor 4*cr5+lt, un, lt
-; P9-NEXT: fcmpo cr0, f1, f3
-; P9-NEXT: crnor 4*cr5+gt, un, lt
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+lt
+; P9-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3296,11 +3296,11 @@ define i32 @fcmps_oge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: fcmpo cr0, f2, f4
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: crnor 4*cr5+lt, un, lt
-; NOVSX-NEXT: fcmpo cr0, f1, f3
-; NOVSX-NEXT: crnor 4*cr5+gt, un, lt
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: fcmpo cr1, f1, f3
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+lt
+; NOVSX-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"oge", metadata !"fpexcept.strict") #0
@@ -3313,11 +3313,11 @@ define i32 @fcmps_oeq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpo cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: crandc 4*cr5+gt, eq, eq
+; P8-NEXT: crandc 4*cr6+lt, eq, eq
; P8-NEXT: fcmpo cr1, f2, f4
; P8-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_oeq_ppcf128:
@@ -3326,20 +3326,20 @@ define i32 @fcmps_oeq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
-; P9-NEXT: crandc 4*cr5+gt, eq, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, eq, eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmps_oeq_ppcf128:
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpo cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: crandc 4*cr5+gt, eq, eq
+; NOVSX-NEXT: crandc 4*cr6+lt, eq, eq
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"oeq", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3352,24 +3352,24 @@ define i32 @fcmps_one_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: fcmpo cr0, f2, f4
; P8-NEXT: li r3, 1
; P8-NEXT: crnor 4*cr5+lt, un, eq
-; P8-NEXT: fcmpo cr0, f1, f3
-; P8-NEXT: crnor 4*cr5+gt, un, eq
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: fcmpo cr1, f1, f3
+; P8-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+eq
+; P8-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_one_ppcf128:
; P9: # %bb.0:
; P9-NEXT: fcmpo cr0, f2, f4
+; P9-NEXT: fcmpo cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crnor 4*cr5+lt, un, eq
-; P9-NEXT: fcmpo cr0, f1, f3
-; P9-NEXT: crnor 4*cr5+gt, un, eq
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+eq
+; P9-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3378,11 +3378,11 @@ define i32 @fcmps_one_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: fcmpo cr0, f2, f4
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: crnor 4*cr5+lt, un, eq
-; NOVSX-NEXT: fcmpo cr0, f1, f3
-; NOVSX-NEXT: crnor 4*cr5+gt, un, eq
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: fcmpo cr1, f1, f3
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr1+un, 4*cr1+eq
+; NOVSX-NEXT: crand 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"one", metadata !"fpexcept.strict") #0
@@ -3395,12 +3395,12 @@ define i32 @fcmps_ult_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpo cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: cror 4*cr5+gt, lt, un
+; P8-NEXT: cror 4*cr7+lt, lt, un
; P8-NEXT: fcmpo cr1, f2, f4
; P8-NEXT: cror 4*cr5+lt, 4*cr1+lt, 4*cr1+un
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
@@ -3410,10 +3410,10 @@ define i32 @fcmps_ult_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: cror 4*cr5+lt, 4*cr1+lt, 4*cr1+un
-; P9-NEXT: cror 4*cr5+gt, lt, un
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: cror 4*cr7+lt, lt, un
+; P9-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3421,12 +3421,12 @@ define i32 @fcmps_ult_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpo cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: cror 4*cr5+gt, lt, un
+; NOVSX-NEXT: cror 4*cr7+lt, lt, un
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: cror 4*cr5+lt, 4*cr1+lt, 4*cr1+un
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ult", metadata !"fpexcept.strict") #0
@@ -3441,9 +3441,9 @@ define i32 @fcmps_ule_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: li r3, 1
; P8-NEXT: fcmpo cr1, f1, f3
; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, gt
-; P8-NEXT: crnor 4*cr5+gt, 4*cr1+gt, 4*cr1+eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr6+lt, 4*cr1+gt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_ule_ppcf128:
@@ -3452,9 +3452,9 @@ define i32 @fcmps_ule_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, gt
-; P9-NEXT: crnor 4*cr5+gt, 4*cr1+gt, 4*cr1+eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crnor 4*cr6+lt, 4*cr1+gt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmps_ule_ppcf128:
@@ -3463,9 +3463,9 @@ define i32 @fcmps_ule_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: fcmpo cr1, f1, f3
; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, gt
-; NOVSX-NEXT: crnor 4*cr5+gt, 4*cr1+gt, 4*cr1+eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr6+lt, 4*cr1+gt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ule", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3477,12 +3477,12 @@ define i32 @fcmps_ugt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpo cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: cror 4*cr5+gt, gt, un
+; P8-NEXT: cror 4*cr7+lt, gt, un
; P8-NEXT: fcmpo cr1, f2, f4
; P8-NEXT: cror 4*cr5+lt, 4*cr1+gt, 4*cr1+un
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
@@ -3492,10 +3492,10 @@ define i32 @fcmps_ugt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: cror 4*cr5+lt, 4*cr1+gt, 4*cr1+un
-; P9-NEXT: cror 4*cr5+gt, gt, un
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: cror 4*cr7+lt, gt, un
+; P9-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3503,12 +3503,12 @@ define i32 @fcmps_ugt_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpo cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: cror 4*cr5+gt, gt, un
+; NOVSX-NEXT: cror 4*cr7+lt, gt, un
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: cror 4*cr5+lt, 4*cr1+gt, 4*cr1+un
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ugt", metadata !"fpexcept.strict") #0
@@ -3523,9 +3523,9 @@ define i32 @fcmps_uge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: li r3, 1
; P8-NEXT: fcmpo cr1, f1, f3
; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, lt
-; P8-NEXT: crnor 4*cr5+gt, 4*cr1+lt, 4*cr1+eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crnor 4*cr6+lt, 4*cr1+lt, 4*cr1+eq
+; P8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr7+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_uge_ppcf128:
@@ -3534,9 +3534,9 @@ define i32 @fcmps_uge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, lt
-; P9-NEXT: crnor 4*cr5+gt, 4*cr1+lt, 4*cr1+eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crnor 4*cr6+lt, 4*cr1+lt, 4*cr1+eq
+; P9-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr7+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmps_uge_ppcf128:
@@ -3545,9 +3545,9 @@ define i32 @fcmps_uge_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: fcmpo cr1, f1, f3
; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, lt
-; NOVSX-NEXT: crnor 4*cr5+gt, 4*cr1+lt, 4*cr1+eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crnor 4*cr6+lt, 4*cr1+lt, 4*cr1+eq
+; NOVSX-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr7+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"uge", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
@@ -3559,12 +3559,12 @@ define i32 @fcmps_ueq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8: # %bb.0:
; P8-NEXT: fcmpo cr0, f1, f3
; P8-NEXT: li r3, 1
-; P8-NEXT: cror 4*cr5+gt, eq, un
+; P8-NEXT: cror 4*cr7+lt, eq, un
; P8-NEXT: fcmpo cr1, f2, f4
; P8-NEXT: cror 4*cr5+lt, 4*cr1+eq, 4*cr1+un
-; P8-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P8-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P8-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P8-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P8-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
; P8-NEXT: blr
;
@@ -3574,10 +3574,10 @@ define i32 @fcmps_ueq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f2, f4
; P9-NEXT: li r3, 1
; P9-NEXT: cror 4*cr5+lt, 4*cr1+eq, 4*cr1+un
-; P9-NEXT: cror 4*cr5+gt, eq, un
-; P9-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; P9-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; P9-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; P9-NEXT: cror 4*cr7+lt, eq, un
+; P9-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; P9-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; P9-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
; P9-NEXT: blr
;
@@ -3585,12 +3585,12 @@ define i32 @fcmps_ueq_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX: # %bb.0:
; NOVSX-NEXT: fcmpo cr0, f1, f3
; NOVSX-NEXT: li r3, 1
-; NOVSX-NEXT: cror 4*cr5+gt, eq, un
+; NOVSX-NEXT: cror 4*cr7+lt, eq, un
; NOVSX-NEXT: fcmpo cr1, f2, f4
; NOVSX-NEXT: cror 4*cr5+lt, 4*cr1+eq, 4*cr1+un
-; NOVSX-NEXT: crand 4*cr5+lt, eq, 4*cr5+lt
-; NOVSX-NEXT: crandc 4*cr5+gt, 4*cr5+gt, eq
-; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; NOVSX-NEXT: crand 4*cr6+lt, eq, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr7+lt, eq
+; NOVSX-NEXT: crnor 4*cr5+lt, 4*cr5+lt, 4*cr6+lt
; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"ueq", metadata !"fpexcept.strict") #0
@@ -3605,8 +3605,8 @@ define i32 @fcmps_une_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P8-NEXT: li r3, 1
; P8-NEXT: fcmpo cr1, f1, f3
; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, eq
-; P8-NEXT: crandc 4*cr5+lt, 4*cr1+eq, 4*cr5+lt
-; P8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P8-NEXT: crandc 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P8-NEXT: isel r3, 0, r3, 4*cr6+lt
; P8-NEXT: blr
;
; P9-LABEL: fcmps_une_ppcf128:
@@ -3615,8 +3615,8 @@ define i32 @fcmps_une_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; P9-NEXT: fcmpo cr1, f1, f3
; P9-NEXT: li r3, 1
; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, eq
-; P9-NEXT: crandc 4*cr5+lt, 4*cr1+eq, 4*cr5+lt
-; P9-NEXT: isel r3, 0, r3, 4*cr5+lt
+; P9-NEXT: crandc 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; P9-NEXT: isel r3, 0, r3, 4*cr6+lt
; P9-NEXT: blr
;
; NOVSX-LABEL: fcmps_une_ppcf128:
@@ -3625,8 +3625,8 @@ define i32 @fcmps_une_ppcf128(ppc_fp128 %a, ppc_fp128 %b) #0 {
; NOVSX-NEXT: li r3, 1
; NOVSX-NEXT: fcmpo cr1, f1, f3
; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, eq
-; NOVSX-NEXT: crandc 4*cr5+lt, 4*cr1+eq, 4*cr5+lt
-; NOVSX-NEXT: isel r3, 0, r3, 4*cr5+lt
+; NOVSX-NEXT: crandc 4*cr6+lt, 4*cr1+eq, 4*cr5+lt
+; NOVSX-NEXT: isel r3, 0, r3, 4*cr6+lt
; NOVSX-NEXT: blr
%cmp = call i1 @llvm.experimental.constrained.fcmps.ppcf128(ppc_fp128 %a, ppc_fp128 %b, metadata !"une", metadata !"fpexcept.strict") #0
%conv = zext i1 %cmp to i32
diff --git a/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll b/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll
index 9cc42cf74b7f94a..cba42ecbae5c95c 100644
--- a/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll
+++ b/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll
@@ -106,15 +106,15 @@ define float @fooul(float %X) #0 {
; PPC64-NEXT: rldicl 5, 5, 53, 11
; PPC64-NEXT: std 4, -32(1)
; PPC64-NEXT: rldicl 4, 5, 11, 1
-; PPC64-NEXT: cmpldi 7, 1
-; PPC64-NEXT: bc 12, 1, .LBB2_6
+; PPC64-NEXT: cmpldi 1, 7, 1
+; PPC64-NEXT: bc 12, 5, .LBB2_6
; PPC64-NEXT: # %bb.5: # %entry
; PPC64-NEXT: ori 4, 6, 0
; PPC64-NEXT: b .LBB2_6
; PPC64-NEXT: .LBB2_6: # %entry
-; PPC64-NEXT: cmpdi 3, 0
+; PPC64-NEXT: cmpdi 5, 3, 0
; PPC64-NEXT: std 4, -24(1)
-; PPC64-NEXT: bc 12, 0, .LBB2_8
+; PPC64-NEXT: bc 12, 20, .LBB2_8
; PPC64-NEXT: # %bb.7: # %entry
; PPC64-NEXT: lfd 0, -32(1)
; PPC64-NEXT: fcfid 0, 0
diff --git a/llvm/test/CodeGen/PowerPC/fptoui-be-crash.ll b/llvm/test/CodeGen/PowerPC/fptoui-be-crash.ll
index fc93f893b1d5d66..f942798880d3044 100644
--- a/llvm/test/CodeGen/PowerPC/fptoui-be-crash.ll
+++ b/llvm/test/CodeGen/PowerPC/fptoui-be-crash.ll
@@ -9,6 +9,7 @@ define dso_local void @calc_buffer() local_unnamed_addr #0 {
; CHECK-NEXT: rldicl r6, r3, 63, 1
; CHECK-NEXT: clrldi r7, r3, 63
; CHECK-NEXT: clrldi r4, r3, 53
+; CHECK-NEXT: cmpdi cr5, r3, 0
; CHECK-NEXT: addi r5, r5, 1
; CHECK-NEXT: or r7, r7, r6
; CHECK-NEXT: cmpldi r5, 1
@@ -33,10 +34,9 @@ define dso_local void @calc_buffer() local_unnamed_addr #0 {
; CHECK-NEXT: ori r5, r7, 0
; CHECK-NEXT: b .LBB0_4
; CHECK-NEXT: .LBB0_4:
-; CHECK-NEXT: cmpdi r3, 0
; CHECK-NEXT: std r4, -32(r1)
; CHECK-NEXT: std r5, -24(r1)
-; CHECK-NEXT: bc 12, lt, .LBB0_6
+; CHECK-NEXT: bc 12, 4*cr5+lt, .LBB0_6
; CHECK-NEXT: # %bb.5:
; CHECK-NEXT: lfd f0, -32(r1)
; CHECK-NEXT: fcfid f0, f0
diff --git a/llvm/test/CodeGen/PowerPC/is_fpclass.ll b/llvm/test/CodeGen/PowerPC/is_fpclass.ll
index 57f457553a54070..e89b34465a76b2a 100644
--- a/llvm/test/CodeGen/PowerPC/is_fpclass.ll
+++ b/llvm/test/CodeGen/PowerPC/is_fpclass.ll
@@ -422,13 +422,13 @@ define i1 @isclass_00d_double(double %x) nounwind {
; CHECK-NEXT: mffprd 3, 1
; CHECK-NEXT: xststdcdp 0, 1, 127
; CHECK-NEXT: xststdcdp 1, 1, 64
+; CHECK-NEXT: xststdcdp 7, 1, 16
; CHECK-NEXT: rldicl 3, 3, 32, 32
; CHECK-NEXT: crandc 20, 0, 2
; CHECK-NEXT: andis. 3, 3, 8
; CHECK-NEXT: li 3, 1
-; CHECK-NEXT: crand 21, 6, 2
-; CHECK-NEXT: xststdcdp 0, 1, 16
-; CHECK-NEXT: cror 21, 2, 21
+; CHECK-NEXT: crand 24, 6, 2
+; CHECK-NEXT: cror 21, 30, 24
; CHECK-NEXT: crnor 20, 21, 20
; CHECK-NEXT: isel 3, 0, 3, 20
; CHECK-NEXT: blr
@@ -440,11 +440,11 @@ define i1 @isclass_1c0_float(float %x) nounwind {
; CHECK-LABEL: isclass_1c0_float:
; CHECK: # %bb.0:
; CHECK-NEXT: xststdcsp 0, 1, 127
+; CHECK-NEXT: xststdcsp 1, 1, 10
; CHECK-NEXT: li 3, 1
; CHECK-NEXT: crnor 20, 0, 2
-; CHECK-NEXT: xststdcsp 0, 1, 10
-; CHECK-NEXT: crnor 20, 2, 20
-; CHECK-NEXT: isel 3, 0, 3, 20
+; CHECK-NEXT: crnor 24, 6, 20
+; CHECK-NEXT: isel 3, 0, 3, 24
; CHECK-NEXT: blr
%1 = call i1 @llvm.is.fpclass.f32(float %x, i32 448)
ret i1 %1
diff --git a/llvm/test/CodeGen/PowerPC/p10-spill-creq.ll b/llvm/test/CodeGen/PowerPC/p10-spill-creq.ll
index ac9641ff35b0cb5..52743884a18595c 100644
--- a/llvm/test/CodeGen/PowerPC/p10-spill-creq.ll
+++ b/llvm/test/CodeGen/PowerPC/p10-spill-creq.ll
@@ -114,21 +114,21 @@ define dso_local double @P10_Spill_CR_EQ(ptr %arg) local_unnamed_addr #0 {
; CHECK-NEXT: lwz r9, -4(r1)
; CHECK-NEXT: crandc 4*cr5+gt, 4*cr5+gt, 4*cr7+eq
; CHECK-NEXT: crandc 4*cr7+eq, 4*cr7+un, 4*cr2+eq
-; CHECK-NEXT: crandc 4*cr5+lt, 4*cr5+lt, 4*cr6+eq
+; CHECK-NEXT: crandc 4*cr6+eq, 4*cr5+lt, 4*cr6+eq
; CHECK-NEXT: setbc r7, 4*cr6+un
; CHECK-NEXT: setbc r8, 4*cr5+un
; CHECK-NEXT: lwz r12, 8(r1)
; CHECK-NEXT: xxlxor f2, f2, f2
; CHECK-NEXT: isel r3, r3, r5, 4*cr5+gt
; CHECK-NEXT: setbc r5, 4*cr7+gt
-; CHECK-NEXT: crnor 4*cr5+gt, 4*cr6+gt, 4*cr5+gt
-; CHECK-NEXT: crnor 4*cr6+gt, 4*cr7+lt, 4*cr7+eq
-; CHECK-NEXT: crnor 4*cr5+lt, 4*cr6+lt, 4*cr5+lt
+; CHECK-NEXT: crnor 4*cr1+lt, 4*cr6+gt, 4*cr5+gt
+; CHECK-NEXT: crnor lt, 4*cr7+lt, 4*cr7+eq
+; CHECK-NEXT: crnor 4*cr5+lt, 4*cr6+lt, 4*cr6+eq
; CHECK-NEXT: add r5, r7, r5
; CHECK-NEXT: add r5, r8, r5
-; CHECK-NEXT: isel r3, 0, r3, 4*cr5+gt
+; CHECK-NEXT: isel r3, 0, r3, 4*cr1+lt
; CHECK-NEXT: isel r4, 0, r4, 4*cr5+lt
-; CHECK-NEXT: isel r6, 0, r6, 4*cr6+gt
+; CHECK-NEXT: isellt r6, 0, r6
; CHECK-NEXT: mtocrf 128, r9
; CHECK-NEXT: mtfprd f0, r5
; CHECK-NEXT: isel r4, 0, r4, 4*cr5+eq
diff --git a/llvm/test/CodeGen/PowerPC/ppc32-selectcc-i64.ll b/llvm/test/CodeGen/PowerPC/ppc32-selectcc-i64.ll
index 801944315de009d..67a472e50929dc2 100644
--- a/llvm/test/CodeGen/PowerPC/ppc32-selectcc-i64.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc32-selectcc-i64.ll
@@ -25,9 +25,9 @@ define i1 @cmp(i8* %a, i8* %b) {
; CHECK-NEXT: li 3, 1
; CHECK-NEXT: li 4, -1
; CHECK-NEXT: crandc 20, 0, 2
-; CHECK-NEXT: crand 21, 2, 4
-; CHECK-NEXT: cror 20, 21, 20
-; CHECK-NEXT: isel 3, 4, 3, 20
+; CHECK-NEXT: crand 24, 2, 4
+; CHECK-NEXT: cror 28, 24, 20
+; CHECK-NEXT: isel 3, 4, 3, 28
; CHECK-NEXT: srwi 3, 3, 31
; CHECK-NEXT: blr
entry:
diff --git a/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll b/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
index a2a5c6c5eafb7fc..2b68215cf586bd1 100644
--- a/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
@@ -424,9 +424,9 @@ define i64 @setb17(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r3, r4
; CHECK-PWR8-NEXT: li r5, -1
; CHECK-PWR8-NEXT: li r6, 1
+; CHECK-PWR8-NEXT: cmpld cr1, r3, r4
; CHECK-PWR8-NEXT: iselgt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r3, r4
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %a, %b
%t2 = icmp sgt i64 %a, %b
@@ -448,9 +448,9 @@ define i64 @setb18(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r3, r4
; CHECK-PWR8-NEXT: li r5, -1
; CHECK-PWR8-NEXT: li r6, 1
+; CHECK-PWR8-NEXT: cmpld cr1, r4, r3
; CHECK-PWR8-NEXT: iselgt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r4, r3
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %b, %a
%t2 = icmp sgt i64 %a, %b
@@ -472,9 +472,9 @@ define i64 @setb19(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r4, r3
; CHECK-PWR8-NEXT: li r5, -1
; CHECK-PWR8-NEXT: li r6, 1
+; CHECK-PWR8-NEXT: cmpld cr1, r3, r4
; CHECK-PWR8-NEXT: isellt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r3, r4
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %a, %b
%t2 = icmp slt i64 %b, %a
@@ -496,9 +496,9 @@ define i64 @setb20(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r4, r3
; CHECK-PWR8-NEXT: li r5, -1
; CHECK-PWR8-NEXT: li r6, 1
+; CHECK-PWR8-NEXT: cmpld cr1, r4, r3
; CHECK-PWR8-NEXT: isellt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r4, r3
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %b, %a
%t2 = icmp slt i64 %b, %a
@@ -520,9 +520,9 @@ define i64 @setb21(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r3, r4
; CHECK-PWR8-NEXT: li r5, 1
; CHECK-PWR8-NEXT: li r6, -1
+; CHECK-PWR8-NEXT: cmpld cr1, r3, r4
; CHECK-PWR8-NEXT: isellt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r3, r4
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %a, %b
%t2 = icmp slt i64 %a, %b
@@ -544,9 +544,9 @@ define i64 @setb22(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r3, r4
; CHECK-PWR8-NEXT: li r5, 1
; CHECK-PWR8-NEXT: li r6, -1
+; CHECK-PWR8-NEXT: cmpld cr1, r4, r3
; CHECK-PWR8-NEXT: isellt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r4, r3
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %b, %a
%t2 = icmp slt i64 %a, %b
@@ -568,9 +568,9 @@ define i64 @setb23(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r4, r3
; CHECK-PWR8-NEXT: li r5, 1
; CHECK-PWR8-NEXT: li r6, -1
+; CHECK-PWR8-NEXT: cmpld cr1, r3, r4
; CHECK-PWR8-NEXT: iselgt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r3, r4
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %a, %b
%t2 = icmp sgt i64 %b, %a
@@ -592,9 +592,9 @@ define i64 @setb24(i64 %a, i64 %b) {
; CHECK-PWR8-NEXT: cmpd r4, r3
; CHECK-PWR8-NEXT: li r5, 1
; CHECK-PWR8-NEXT: li r6, -1
+; CHECK-PWR8-NEXT: cmpld cr1, r4, r3
; CHECK-PWR8-NEXT: iselgt r5, r6, r5
-; CHECK-PWR8-NEXT: cmpld r4, r3
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i64 %b, %a
%t2 = icmp sgt i64 %b, %a
@@ -804,9 +804,9 @@ define i64 @setbsw3(i32 %a, i32 %b) {
; CHECK-PWR8-NEXT: cmpw r4, r3
; CHECK-PWR8-NEXT: li r5, 1
; CHECK-PWR8-NEXT: li r6, -1
+; CHECK-PWR8-NEXT: cmplw cr1, r3, r4
; CHECK-PWR8-NEXT: iselgt r5, r6, r5
-; CHECK-PWR8-NEXT: cmplw r3, r4
-; CHECK-PWR8-NEXT: iseleq r3, 0, r5
+; CHECK-PWR8-NEXT: isel r3, 0, r5, 4*cr1+eq
; CHECK-PWR8-NEXT: blr
%t1 = icmp eq i32 %a, %b
%t2 = icmp sgt i32 %b, %a
@@ -1150,9 +1150,9 @@ define i64 @setbf1(float %a, float %b) {
; CHECK-PWR8-NEXT: li r3, 0
; CHECK-PWR8-NEXT: li r4, 1
; CHECK-PWR8-NEXT: isellt r3, r4, r3
-; CHECK-PWR8-NEXT: fcmpu cr0, f1, f2
+; CHECK-PWR8-NEXT: fcmpu cr1, f1, f2
; CHECK-PWR8-NEXT: li r4, -1
-; CHECK-PWR8-NEXT: isellt r3, r4, r3
+; CHECK-PWR8-NEXT: isel r3, r4, r3, 4*cr1+lt
; CHECK-PWR8-NEXT: blr
%t1 = fcmp nnan olt float %a, %b
%t2 = fcmp nnan olt float %b, %a
@@ -1222,9 +1222,9 @@ define i64 @setbdf2(double %a, double %b) {
; CHECK-PWR8-NEXT: li r3, 0
; CHECK-PWR8-NEXT: li r4, -1
; CHECK-PWR8-NEXT: iselgt r3, r4, r3
-; CHECK-PWR8-NEXT: xscmpudp cr0, f2, f1
+; CHECK-PWR8-NEXT: xscmpudp cr1, f2, f1
; CHECK-PWR8-NEXT: li r4, 1
-; CHECK-PWR8-NEXT: isellt r3, r4, r3
+; CHECK-PWR8-NEXT: isel r3, r4, r3, 4*cr1+lt
; CHECK-PWR8-NEXT: blr
%t1 = fcmp nnan olt double %b, %a
%t2 = fcmp nnan ogt double %b, %a
@@ -1317,11 +1317,11 @@ define i64 @setbn2(double %a, double %b) {
; CHECK: # %bb.0:
; CHECK-NEXT: fcmpu cr0, f1, f2
; CHECK-NEXT: li r3, 1
+; CHECK-NEXT: xscmpudp cr1, f1, f2
; CHECK-NEXT: li r4, -1
; CHECK-NEXT: cror 4*cr5+lt, un, eq
-; CHECK-NEXT: xscmpudp cr0, f1, f2
; CHECK-NEXT: isel r3, 0, r3, 4*cr5+lt
-; CHECK-NEXT: isellt r3, r4, r3
+; CHECK-NEXT: isel r3, r4, r3, 4*cr1+lt
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: setbn2:
@@ -1330,9 +1330,9 @@ define i64 @setbn2(double %a, double %b) {
; CHECK-PWR8-NEXT: li r3, 1
; CHECK-PWR8-NEXT: li r4, -1
; CHECK-PWR8-NEXT: cror 4*cr5+lt, un, eq
-; CHECK-PWR8-NEXT: xscmpudp cr0, f1, f2
+; CHECK-PWR8-NEXT: xscmpudp cr1, f1, f2
; CHECK-PWR8-NEXT: isel r3, 0, r3, 4*cr5+lt
-; CHECK-PWR8-NEXT: isellt r3, r4, r3
+; CHECK-PWR8-NEXT: isel r3, r4, r3, 4*cr1+lt
; CHECK-PWR8-NEXT: blr
%t1 = fcmp olt double %a, %b
%t2 = fcmp one double %a, %b
@@ -1378,11 +1378,11 @@ define void @setbn4(i128 %0, ptr %sel.out) {
; CHECK-NEXT: rldic r6, r6, 48, 15
; CHECK-NEXT: cmpld r4, r6
; CHECK-NEXT: crandc 4*cr5+lt, gt, eq
-; CHECK-NEXT: crandc 4*cr5+gt, eq, 4*cr1+eq
-; CHECK-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; CHECK-NEXT: crandc 4*cr6+lt, eq, 4*cr1+eq
+; CHECK-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
; CHECK-NEXT: rldicl. r4, r4, 16, 48
; CHECK-NEXT: li r4, -1
-; CHECK-NEXT: isel r3, 0, r3, 4*cr5+lt
+; CHECK-NEXT: isel r3, 0, r3, 4*cr7+lt
; CHECK-NEXT: iseleq r3, r4, r3
; CHECK-NEXT: stw r3, 0(r5)
; CHECK-NEXT: blr
@@ -1395,11 +1395,11 @@ define void @setbn4(i128 %0, ptr %sel.out) {
; CHECK-PWR8-NEXT: rldic r6, r6, 48, 15
; CHECK-PWR8-NEXT: cmpld r4, r6
; CHECK-PWR8-NEXT: crandc 4*cr5+lt, gt, eq
-; CHECK-PWR8-NEXT: crandc 4*cr5+gt, eq, 4*cr1+eq
+; CHECK-PWR8-NEXT: crandc 4*cr6+lt, eq, 4*cr1+eq
; CHECK-PWR8-NEXT: rldicl. r4, r4, 16, 48
; CHECK-PWR8-NEXT: li r4, -1
-; CHECK-PWR8-NEXT: crnor 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
-; CHECK-PWR8-NEXT: isel r3, 0, r3, 4*cr5+lt
+; CHECK-PWR8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; CHECK-PWR8-NEXT: isel r3, 0, r3, 4*cr7+lt
; CHECK-PWR8-NEXT: iseleq r3, r4, r3
; CHECK-PWR8-NEXT: stw r3, 0(r5)
; CHECK-PWR8-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/ppc64-P9-vabsd.ll b/llvm/test/CodeGen/PowerPC/ppc64-P9-vabsd.ll
index 7a6640fea2d1e42..989afa3563c98d6 100644
--- a/llvm/test/CodeGen/PowerPC/ppc64-P9-vabsd.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc64-P9-vabsd.ll
@@ -2036,8 +2036,8 @@ define <2 x i64> @absd_int64_ugt(<2 x i64>, <2 x i64>) {
; CHECK-PWR7-NEXT: iselgt r7, r6, r5
; CHECK-PWR7-NEXT: std r7, -8(r1)
; CHECK-PWR7-NEXT: ld r7, -64(r1)
-; CHECK-PWR7-NEXT: cmpld r8, r7
-; CHECK-PWR7-NEXT: iselgt r5, r6, r5
+; CHECK-PWR7-NEXT: cmpld cr1, r8, r7
+; CHECK-PWR7-NEXT: isel r5, r6, r5, 4*cr1+gt
; CHECK-PWR7-NEXT: std r5, -16(r1)
; CHECK-PWR7-NEXT: sub r5, r4, r3
; CHECK-PWR7-NEXT: sub r3, r3, r4
diff --git a/llvm/test/CodeGen/PowerPC/ppcf128-constrained-fp-intrinsics.ll b/llvm/test/CodeGen/PowerPC/ppcf128-constrained-fp-intrinsics.ll
index 033728500abc8cf..b9a220a2f1ab234 100644
--- a/llvm/test/CodeGen/PowerPC/ppcf128-constrained-fp-intrinsics.ll
+++ b/llvm/test/CodeGen/PowerPC/ppcf128-constrained-fp-intrinsics.ll
@@ -1297,10 +1297,10 @@ define i32 @test_fptoui_ppc_i32_ppc_fp128(ppc_fp128 %first) #0 {
; PC64LE-NEXT: lis 3, -32768
; PC64LE-NEXT: fcmpo 0, 1, 0
; PC64LE-NEXT: crand 20, 2, 4
-; PC64LE-NEXT: crandc 21, 0, 2
-; PC64LE-NEXT: cror 20, 21, 20
-; PC64LE-NEXT: isel 30, 0, 3, 20
-; PC64LE-NEXT: bc 12, 20, .LBB31_2
+; PC64LE-NEXT: crandc 24, 0, 2
+; PC64LE-NEXT: cror 28, 24, 20
+; PC64LE-NEXT: isel 30, 0, 3, 28
+; PC64LE-NEXT: bc 12, 28, .LBB31_2
; PC64LE-NEXT: # %bb.1: # %entry
; PC64LE-NEXT: fmr 3, 0
; PC64LE-NEXT: .LBB31_2: # %entry
@@ -1334,10 +1334,10 @@ define i32 @test_fptoui_ppc_i32_ppc_fp128(ppc_fp128 %first) #0 {
; PC64LE9-NEXT: lis 3, -32768
; PC64LE9-NEXT: fcmpo 0, 1, 0
; PC64LE9-NEXT: crand 20, 2, 4
-; PC64LE9-NEXT: crandc 21, 0, 2
-; PC64LE9-NEXT: cror 20, 21, 20
-; PC64LE9-NEXT: isel 30, 0, 3, 20
-; PC64LE9-NEXT: bc 12, 20, .LBB31_2
+; PC64LE9-NEXT: crandc 24, 0, 2
+; PC64LE9-NEXT: cror 28, 24, 20
+; PC64LE9-NEXT: isel 30, 0, 3, 28
+; PC64LE9-NEXT: bc 12, 28, .LBB31_2
; PC64LE9-NEXT: # %bb.1: # %entry
; PC64LE9-NEXT: fmr 3, 0
; PC64LE9-NEXT: .LBB31_2: # %entry
@@ -1370,10 +1370,10 @@ define i32 @test_fptoui_ppc_i32_ppc_fp128(ppc_fp128 %first) #0 {
; PC64-NEXT: addis 3, 2, .LCPI31_1 at toc@ha
; PC64-NEXT: lfs 4, .LCPI31_1 at toc@l(3)
; PC64-NEXT: fcmpo 0, 1, 0
-; PC64-NEXT: crandc 21, 0, 2
+; PC64-NEXT: crandc 24, 0, 2
; PC64-NEXT: fcmpo 1, 2, 4
; PC64-NEXT: crand 20, 2, 4
-; PC64-NEXT: cror 8, 21, 20
+; PC64-NEXT: cror 8, 24, 20
; PC64-NEXT: fmr 3, 4
; PC64-NEXT: bc 12, 8, .LBB31_2
; PC64-NEXT: # %bb.1: # %entry
diff --git a/llvm/test/CodeGen/PowerPC/ppcf128-freeze.mir b/llvm/test/CodeGen/PowerPC/ppcf128-freeze.mir
index 474c288bba88bf9..9431c61b957f554 100644
--- a/llvm/test/CodeGen/PowerPC/ppcf128-freeze.mir
+++ b/llvm/test/CodeGen/PowerPC/ppcf128-freeze.mir
@@ -23,8 +23,8 @@
; CHECK-NEXT: crnor 20, 7, 2
; CHECK-NEXT: fcmpu 0, 1, 0
; CHECK-NEXT: fcmpu 1, 1, 1
- ; CHECK-NEXT: crand 20, 2, 20
- ; CHECK-NEXT: bclr 12, 20, 0
+ ; CHECK-NEXT: crand 24, 2, 20
+ ; CHECK-NEXT: bclr 12, 24, 0
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: crnor 20, 7, 2
; CHECK-NEXT: bclr 12, 20, 0
diff --git a/llvm/test/CodeGen/PowerPC/pr48388.ll b/llvm/test/CodeGen/PowerPC/pr48388.ll
index 04efd989f5e86ca..086238694fac6c5 100644
--- a/llvm/test/CodeGen/PowerPC/pr48388.ll
+++ b/llvm/test/CodeGen/PowerPC/pr48388.ll
@@ -8,13 +8,13 @@ define i64 @julia_div_i64(i64 %0, i64 %1) local_unnamed_addr #0 {
; CHECK-NEXT: divd r5, r3, r4
; CHECK-NEXT: lis r6, -1592
; CHECK-NEXT: cmpdi r3, 0
+; CHECK-NEXT: cmpdi cr1, r4, 0
; CHECK-NEXT: ori r7, r6, 21321
; CHECK-NEXT: ori r6, r6, 65519
; CHECK-NEXT: rldic r7, r7, 4, 17
; CHECK-NEXT: rldic r6, r6, 4, 17
; CHECK-NEXT: iselgt r8, r6, r7
-; CHECK-NEXT: cmpdi r4, 0
-; CHECK-NEXT: iselgt r6, r6, r7
+; CHECK-NEXT: isel r6, r6, r7, 4*cr1+gt
; CHECK-NEXT: xor r6, r8, r6
; CHECK-NEXT: cntlzd r6, r6
; CHECK-NEXT: rldicl r6, r6, 58, 63
diff --git a/llvm/test/CodeGen/PowerPC/pr49509.ll b/llvm/test/CodeGen/PowerPC/pr49509.ll
index 7b6248c60ab4214..dec7059761aa803 100644
--- a/llvm/test/CodeGen/PowerPC/pr49509.ll
+++ b/llvm/test/CodeGen/PowerPC/pr49509.ll
@@ -40,9 +40,9 @@ define void @test() {
; CHECK-NEXT: .LBB0_6: # %bb66
; CHECK-NEXT: addi 3, 7, 0
; CHECK-NEXT: .LBB0_7: # %bb66
-; CHECK-NEXT: cror 20, 22, 2
+; CHECK-NEXT: cror 24, 22, 2
; CHECK-NEXT: stw 3, 0(3)
-; CHECK-NEXT: bc 12, 20, .LBB0_9
+; CHECK-NEXT: bc 12, 24, .LBB0_9
; CHECK-NEXT: # %bb.8: # %bb66
; CHECK-NEXT: ori 3, 6, 0
; CHECK-NEXT: b .LBB0_10
diff --git a/llvm/test/CodeGen/PowerPC/prefer-dqform.ll b/llvm/test/CodeGen/PowerPC/prefer-dqform.ll
index 912a74ba8df8fb5..e161bf61ff619ce 100644
--- a/llvm/test/CodeGen/PowerPC/prefer-dqform.ll
+++ b/llvm/test/CodeGen/PowerPC/prefer-dqform.ll
@@ -27,8 +27,8 @@ define void @test(ptr dereferenceable(4) %.ial, ptr noalias dereferenceable(4) %
; CHECK-P9-NEXT: slwi r4, r4, 4
; CHECK-P9-NEXT: addze r5, r5
; CHECK-P9-NEXT: sub r4, r4, r10
-; CHECK-P9-NEXT: cmpw r3, r4
-; CHECK-P9-NEXT: bgtlr cr0
+; CHECK-P9-NEXT: cmpw cr1, r3, r4
+; CHECK-P9-NEXT: bgtlr cr1
; CHECK-P9-NEXT: # %bb.1: # %_loop_2_do_.lr.ph
; CHECK-P9-NEXT: extswsli r5, r5, 3
; CHECK-P9-NEXT: add r5, r8, r5
@@ -79,8 +79,8 @@ define void @test(ptr dereferenceable(4) %.ial, ptr noalias dereferenceable(4) %
; CHECK-P10-NEXT: slwi r4, r4, 4
; CHECK-P10-NEXT: addze r5, r5
; CHECK-P10-NEXT: sub r4, r4, r10
-; CHECK-P10-NEXT: cmpw r3, r4
-; CHECK-P10-NEXT: bgtlr cr0
+; CHECK-P10-NEXT: cmpw cr1, r3, r4
+; CHECK-P10-NEXT: bgtlr cr1
; CHECK-P10-NEXT: # %bb.1: # %_loop_2_do_.lr.ph
; CHECK-P10-NEXT: extswsli r5, r5, 3
; CHECK-P10-NEXT: add r5, r8, r5
diff --git a/llvm/test/CodeGen/PowerPC/pzero-fp-xored.ll b/llvm/test/CodeGen/PowerPC/pzero-fp-xored.ll
index 7fac56fe04712d2..df972df13c65e95 100644
--- a/llvm/test/CodeGen/PowerPC/pzero-fp-xored.ll
+++ b/llvm/test/CodeGen/PowerPC/pzero-fp-xored.ll
@@ -66,8 +66,8 @@ define signext i32 @t3(ppc_fp128 %x) local_unnamed_addr #0 {
; CHECK-NEXT: fcmpu 0, 2, 0
; CHECK-NEXT: fcmpu 1, 1, 0
; CHECK-NEXT: crand 20, 6, 1
-; CHECK-NEXT: cror 20, 5, 20
-; CHECK-NEXT: isel 3, 4, 3, 20
+; CHECK-NEXT: cror 24, 5, 20
+; CHECK-NEXT: isel 3, 4, 3, 24
; CHECK-NEXT: blr
;
; CHECK-NVSXALT-LABEL: t3:
@@ -79,8 +79,8 @@ define signext i32 @t3(ppc_fp128 %x) local_unnamed_addr #0 {
; CHECK-NVSXALT-NEXT: fcmpu 0, 2, 0
; CHECK-NVSXALT-NEXT: fcmpu 1, 1, 0
; CHECK-NVSXALT-NEXT: crand 20, 6, 1
-; CHECK-NVSXALT-NEXT: cror 20, 5, 20
-; CHECK-NVSXALT-NEXT: isel 3, 4, 3, 20
+; CHECK-NVSXALT-NEXT: cror 24, 5, 20
+; CHECK-NVSXALT-NEXT: isel 3, 4, 3, 24
; CHECK-NVSXALT-NEXT: blr
entry:
%cmp = fcmp ogt ppc_fp128 %x, 0xM00000000000000000000000000000000
diff --git a/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll b/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll
index d5e77a5cda067f5..501182ca64a6dd7 100644
--- a/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll
+++ b/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll
@@ -1629,9 +1629,9 @@ define ppc_fp128 @testppc_fp128eq(ppc_fp128 %c1, ppc_fp128 %c2, ppc_fp128 %c3, p
; CHECK-NEXT: fcmpu 0, 6, 8
; CHECK-NEXT: fcmpu 1, 5, 7
; CHECK-NEXT: crand 20, 6, 2
-; CHECK-NEXT: fcmpu 0, 2, 4
-; CHECK-NEXT: fcmpu 1, 1, 3
-; CHECK-NEXT: crand 21, 6, 2
+; CHECK-NEXT: fcmpu 6, 2, 4
+; CHECK-NEXT: fcmpu 7, 1, 3
+; CHECK-NEXT: crand 21, 30, 26
; CHECK-NEXT: crxor 20, 21, 20
; CHECK-NEXT: bc 12, 20, .LBB50_2
; CHECK-NEXT: # %bb.1: # %entry
@@ -1650,9 +1650,9 @@ define ppc_fp128 @testppc_fp128eq(ppc_fp128 %c1, ppc_fp128 %c2, ppc_fp128 %c3, p
; CHECK-NO-ISEL-NEXT: fcmpu 0, 6, 8
; CHECK-NO-ISEL-NEXT: fcmpu 1, 5, 7
; CHECK-NO-ISEL-NEXT: crand 20, 6, 2
-; CHECK-NO-ISEL-NEXT: fcmpu 0, 2, 4
-; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 3
-; CHECK-NO-ISEL-NEXT: crand 21, 6, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 6, 2, 4
+; CHECK-NO-ISEL-NEXT: fcmpu 7, 1, 3
+; CHECK-NO-ISEL-NEXT: crand 21, 30, 26
; CHECK-NO-ISEL-NEXT: crxor 20, 21, 20
; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB50_2
; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry
diff --git a/llvm/test/CodeGen/PowerPC/select.ll b/llvm/test/CodeGen/PowerPC/select.ll
index 49d55c7df524af6..c168e78203db463 100644
--- a/llvm/test/CodeGen/PowerPC/select.ll
+++ b/llvm/test/CodeGen/PowerPC/select.ll
@@ -189,11 +189,11 @@ define i64 @f4_sle_0(i64 %x) {
; CHECK-32: # %bb.0:
; CHECK-32-NEXT: cmplwi r3, 0
; CHECK-32-NEXT: cmpwi cr1, r3, 0
+; CHECK-32-NEXT: cmpwi cr6, r4, 0
; CHECK-32-NEXT: crandc 4*cr5+lt, 4*cr1+lt, eq
-; CHECK-32-NEXT: cmpwi cr1, r4, 0
; CHECK-32-NEXT: subfic r5, r4, 0
-; CHECK-32-NEXT: crand 4*cr5+gt, eq, 4*cr1+eq
-; CHECK-32-NEXT: cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt
+; CHECK-32-NEXT: crand 4*cr7+lt, eq, 4*cr6+eq
+; CHECK-32-NEXT: cror 4*cr5+lt, 4*cr7+lt, 4*cr5+lt
; CHECK-32-NEXT: subfze r6, r3
; CHECK-32-NEXT: bclr 12, 4*cr5+lt, 0
; CHECK-32-NEXT: # %bb.1:
diff --git a/llvm/test/CodeGen/PowerPC/sms-cpy-1.ll b/llvm/test/CodeGen/PowerPC/sms-cpy-1.ll
index 334379cda07ec1b..b967b72b138a792 100644
--- a/llvm/test/CodeGen/PowerPC/sms-cpy-1.ll
+++ b/llvm/test/CodeGen/PowerPC/sms-cpy-1.ll
@@ -15,8 +15,8 @@ define void @print_res() nounwind {
; CHECK-NEXT: li 3, 3
; CHECK-NEXT: isellt 3, 4, 3
; CHECK-NEXT: li 4, 1
-; CHECK-NEXT: cmpldi 3, 1
-; CHECK-NEXT: iselgt 3, 3, 4
+; CHECK-NEXT: cmpldi 1, 3, 1
+; CHECK-NEXT: isel 3, 3, 4, 5
; CHECK-NEXT: li 4, 0
; CHECK-NEXT: mtctr 3
; CHECK-NEXT: stdu 1, -128(1)
diff --git a/llvm/test/CodeGen/PowerPC/smulfixsat.ll b/llvm/test/CodeGen/PowerPC/smulfixsat.ll
index 9e371d499da35a1..1038c7b5b43a5dd 100644
--- a/llvm/test/CodeGen/PowerPC/smulfixsat.ll
+++ b/llvm/test/CodeGen/PowerPC/smulfixsat.ll
@@ -26,6 +26,7 @@ define i32 @func2(i32 %x, i32 %y) nounwind {
; CHECK: # %bb.0:
; CHECK-NEXT: mulhw. 6, 3, 4
; CHECK-NEXT: lis 5, 32767
+; CHECK-NEXT: cmpwi 1, 6, -1
; CHECK-NEXT: mullw 3, 3, 4
; CHECK-NEXT: rotlwi 3, 3, 31
; CHECK-NEXT: ori 4, 5, 65535
@@ -35,9 +36,8 @@ define i32 @func2(i32 %x, i32 %y) nounwind {
; CHECK-NEXT: .LBB1_1:
; CHECK-NEXT: addi 3, 4, 0
; CHECK-NEXT: .LBB1_2:
-; CHECK-NEXT: cmpwi 6, -1
; CHECK-NEXT: lis 4, -32768
-; CHECK-NEXT: bc 12, 0, .LBB1_3
+; CHECK-NEXT: bc 12, 4, .LBB1_3
; CHECK-NEXT: blr
; CHECK-NEXT: .LBB1_3:
; CHECK-NEXT: addi 3, 4, 0
diff --git a/llvm/test/CodeGen/PowerPC/spe.ll b/llvm/test/CodeGen/PowerPC/spe.ll
index 4bfc413a5a2aa23..fbd9510e37cf406 100644
--- a/llvm/test/CodeGen/PowerPC/spe.ll
+++ b/llvm/test/CodeGen/PowerPC/spe.ll
@@ -392,10 +392,10 @@ define i1 @test_fcmpult(float %a, float %b) #0 {
; CHECK-NEXT: efscmpeq 0, 3, 3
; CHECK-NEXT: efscmpeq 1, 4, 4
; CHECK-NEXT: crnand 20, 5, 1
-; CHECK-NEXT: efscmplt 0, 3, 4
+; CHECK-NEXT: efscmplt 6, 3, 4
; CHECK-NEXT: li 5, 1
-; CHECK-NEXT: crnor 20, 1, 20
-; CHECK-NEXT: bc 12, 20, .LBB18_2
+; CHECK-NEXT: crnor 28, 25, 20
+; CHECK-NEXT: bc 12, 28, .LBB18_2
; CHECK-NEXT: # %bb.1: # %entry
; CHECK-NEXT: ori 3, 5, 0
; CHECK-NEXT: blr
@@ -1410,9 +1410,9 @@ define i1 @test_dcmpge(double %a, double %b) #0 {
; SPE-NEXT: efdcmpeq 0, 4, 4
; SPE-NEXT: efdcmpeq 1, 3, 3
; SPE-NEXT: efdcmplt 5, 3, 4
-; SPE-NEXT: crand 20, 5, 1
-; SPE-NEXT: crorc 20, 21, 20
-; SPE-NEXT: bc 12, 20, .LBB47_2
+; SPE-NEXT: crand 24, 5, 1
+; SPE-NEXT: crorc 28, 21, 24
+; SPE-NEXT: bc 12, 28, .LBB47_2
; SPE-NEXT: # %bb.1: # %entry
; SPE-NEXT: ori 3, 7, 0
; SPE-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/stack-restore-with-setjmp.ll b/llvm/test/CodeGen/PowerPC/stack-restore-with-setjmp.ll
index c8278e58ad064cb..a50675306059065 100644
--- a/llvm/test/CodeGen/PowerPC/stack-restore-with-setjmp.ll
+++ b/llvm/test/CodeGen/PowerPC/stack-restore-with-setjmp.ll
@@ -30,9 +30,9 @@ define dso_local signext i32 @main(i32 signext %argc, ptr nocapture readnone %ar
; CHECK-NEXT: # kill: def $r3 killed $r3 killed $x3
; CHECK-NEXT: cmpwi 3, 0
; CHECK-NEXT: crmove 20, 10
-; CHECK-NEXT: crorc 20, 10, 2
-; CHECK-NEXT: crmove 21, 2
-; CHECK-NEXT: bc 4, 20, .LBB0_4
+; CHECK-NEXT: crorc 28, 10, 2
+; CHECK-NEXT: crmove 24, 2
+; CHECK-NEXT: bc 4, 28, .LBB0_4
; CHECK-NEXT: # %bb.2: # %if.end5
; CHECK-NEXT: addis 3, 2, .L.str at toc@ha
; CHECK-NEXT: addi 3, 3, .L.str at toc@l
@@ -76,12 +76,12 @@ define dso_local signext i32 @main(i32 signext %argc, ptr nocapture readnone %ar
; BE-NEXT: addi 3, 31, 128
; BE-NEXT: bl _setjmp
; BE-NEXT: nop
-; BE-NEXT: crmove 20, 10
; BE-NEXT: # kill: def $r3 killed $r3 killed $x3
; BE-NEXT: cmpwi 3, 0
-; BE-NEXT: crorc 20, 10, 2
-; BE-NEXT: crmove 21, 2
-; BE-NEXT: bc 4, 20, .LBB0_4
+; BE-NEXT: crorc 28, 10, 2
+; BE-NEXT: crmove 20, 10
+; BE-NEXT: crmove 24, 2
+; BE-NEXT: bc 4, 28, .LBB0_4
; BE-NEXT: # %bb.2: # %if.end5
; BE-NEXT: addis 3, 2, .L.str at toc@ha
; BE-NEXT: addi 3, 3, .L.str at toc@l
diff --git a/llvm/test/CodeGen/PowerPC/umulo-128-legalisation-lowering.ll b/llvm/test/CodeGen/PowerPC/umulo-128-legalisation-lowering.ll
index 48098e3a277c184..b4e7ca4f943ce2d 100644
--- a/llvm/test/CodeGen/PowerPC/umulo-128-legalisation-lowering.ll
+++ b/llvm/test/CodeGen/PowerPC/umulo-128-legalisation-lowering.ll
@@ -54,15 +54,15 @@ define { i128, i8 } @muloti_test(i128 %l, i128 %r) unnamed_addr #0 {
; PPC32-NEXT: crnor 21, 30, 10
; PPC32-NEXT: mulhwu. 26, 9, 4
; PPC32-NEXT: stw 25, 36(1) # 4-byte Folded Spill
-; PPC32-NEXT: crorc 20, 20, 6
-; PPC32-NEXT: stw 27, 44(1) # 4-byte Folded Spill
; PPC32-NEXT: crorc 21, 21, 26
+; PPC32-NEXT: stw 27, 44(1) # 4-byte Folded Spill
+; PPC32-NEXT: crorc 21, 21, 2
; PPC32-NEXT: stw 28, 48(1) # 4-byte Folded Spill
; PPC32-NEXT: mulhwu 30, 6, 10
; PPC32-NEXT: stw 12, 20(1)
-; PPC32-NEXT: crorc 20, 20, 22
-; PPC32-NEXT: crorc 21, 21, 2
; PPC32-NEXT: li 11, 0
+; PPC32-NEXT: crorc 20, 20, 6
+; PPC32-NEXT: crorc 20, 20, 22
; PPC32-NEXT: mullw 26, 5, 10
; PPC32-NEXT: addc 30, 26, 30
; PPC32-NEXT: mulhwu 29, 5, 10
@@ -71,30 +71,30 @@ define { i128, i8 } @muloti_test(i128 %l, i128 %r) unnamed_addr #0 {
; PPC32-NEXT: mullw 22, 7, 6
; PPC32-NEXT: mulhwu 0, 6, 9
; PPC32-NEXT: mulhwu 12, 5, 9
-; PPC32-NEXT: mulhwu 27, 8, 6
; PPC32-NEXT: mullw 25, 6, 9
; PPC32-NEXT: mullw 24, 5, 9
; PPC32-NEXT: mullw 5, 9, 4
; PPC32-NEXT: add 9, 22, 23
-; PPC32-NEXT: add 9, 27, 9
-; PPC32-NEXT: cmplw 1, 9, 27
-; PPC32-NEXT: cror 20, 20, 4
; PPC32-NEXT: mullw 23, 3, 10
; PPC32-NEXT: add 26, 23, 5
; PPC32-NEXT: addc 5, 25, 30
; PPC32-NEXT: addze 0, 0
; PPC32-NEXT: or. 3, 4, 3
; PPC32-NEXT: mulhwu 28, 4, 10
-; PPC32-NEXT: mcrf 1, 0
+; PPC32-NEXT: mcrf 7, 0
; PPC32-NEXT: addc 3, 29, 0
; PPC32-NEXT: add 26, 28, 26
-; PPC32-NEXT: cmplw 6, 26, 28
-; PPC32-NEXT: cror 21, 21, 24
; PPC32-NEXT: mullw 30, 4, 10
; PPC32-NEXT: or. 4, 8, 7
; PPC32-NEXT: addze 4, 11
; PPC32-NEXT: addc 7, 24, 3
-; PPC32-NEXT: crnor 22, 2, 6
+; PPC32-NEXT: crnor 22, 2, 30
+; PPC32-NEXT: mulhwu 27, 8, 6
+; PPC32-NEXT: add 9, 27, 9
+; PPC32-NEXT: cmplw 1, 9, 27
+; PPC32-NEXT: cror 20, 20, 4
+; PPC32-NEXT: cmplw 1, 26, 28
+; PPC32-NEXT: cror 21, 21, 4
; PPC32-NEXT: mullw 27, 8, 6
; PPC32-NEXT: adde 8, 12, 4
; PPC32-NEXT: addc 3, 30, 27
diff --git a/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll b/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll
index f708da86444b2ba..444c2723fd4657d 100644
--- a/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll
+++ b/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll
@@ -245,10 +245,10 @@ define i1 @test_urem_oversized(i66 %X) nounwind {
; PPC-NEXT: cmplwi 1, 10, 13
; PPC-NEXT: rlwinm 3, 3, 31, 31, 31
; PPC-NEXT: crand 20, 6, 0
-; PPC-NEXT: crandc 21, 4, 6
+; PPC-NEXT: crandc 24, 4, 6
; PPC-NEXT: rlwimi. 3, 6, 1, 30, 30
-; PPC-NEXT: cror 20, 20, 21
-; PPC-NEXT: crnand 20, 2, 20
+; PPC-NEXT: cror 28, 20, 24
+; PPC-NEXT: crnand 20, 2, 28
; PPC-NEXT: li 3, 1
; PPC-NEXT: bc 12, 20, .LBB5_1
; PPC-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/vec-min-max.ll b/llvm/test/CodeGen/PowerPC/vec-min-max.ll
index db83fd187bed33e..de1790c5d103ea4 100644
--- a/llvm/test/CodeGen/PowerPC/vec-min-max.ll
+++ b/llvm/test/CodeGen/PowerPC/vec-min-max.ll
@@ -74,8 +74,8 @@ define <2 x i64> @getsmaxi64(<2 x i64> %a, <2 x i64> %b) {
; NOP8VEC-NEXT: iselgt 5, 4, 3
; NOP8VEC-NEXT: std 5, -8(1)
; NOP8VEC-NEXT: ld 5, -32(1)
-; NOP8VEC-NEXT: cmpd 6, 5
-; NOP8VEC-NEXT: iselgt 3, 4, 3
+; NOP8VEC-NEXT: cmpd 1, 6, 5
+; NOP8VEC-NEXT: isel 3, 4, 3, 5
; NOP8VEC-NEXT: std 3, -16(1)
; NOP8VEC-NEXT: addi 3, 1, -16
; NOP8VEC-NEXT: lxvd2x 0, 0, 3
@@ -191,8 +191,8 @@ define <2 x i64> @getsmini64(<2 x i64> %a, <2 x i64> %b) {
; NOP8VEC-NEXT: isellt 5, 4, 3
; NOP8VEC-NEXT: std 5, -8(1)
; NOP8VEC-NEXT: ld 5, -32(1)
-; NOP8VEC-NEXT: cmpd 6, 5
-; NOP8VEC-NEXT: isellt 3, 4, 3
+; NOP8VEC-NEXT: cmpd 1, 6, 5
+; NOP8VEC-NEXT: isel 3, 4, 3, 4
; NOP8VEC-NEXT: std 3, -16(1)
; NOP8VEC-NEXT: addi 3, 1, -16
; NOP8VEC-NEXT: lxvd2x 0, 0, 3
@@ -267,9 +267,9 @@ define i128 @invalidv1i128(<2 x i128> %v1, <2 x i128> %v2) {
; NOP8VEC-NEXT: cmpld 4, 8
; NOP8VEC-NEXT: cmpd 1, 4, 8
; NOP8VEC-NEXT: crandc 20, 4, 2
-; NOP8VEC-NEXT: cmpld 1, 3, 7
-; NOP8VEC-NEXT: crand 21, 2, 4
-; NOP8VEC-NEXT: cror 20, 21, 20
+; NOP8VEC-NEXT: cmpld 6, 3, 7
+; NOP8VEC-NEXT: crand 28, 2, 24
+; NOP8VEC-NEXT: cror 20, 28, 20
; NOP8VEC-NEXT: isel 3, 3, 7, 20
; NOP8VEC-NEXT: isel 4, 4, 8, 20
; NOP8VEC-NEXT: std 3, -32(1)
diff --git a/llvm/test/CodeGen/PowerPC/vec_cmpd_p7.ll b/llvm/test/CodeGen/PowerPC/vec_cmpd_p7.ll
index e9bb6116e68c268..011c4d5ff9fd2f3 100644
--- a/llvm/test/CodeGen/PowerPC/vec_cmpd_p7.ll
+++ b/llvm/test/CodeGen/PowerPC/vec_cmpd_p7.ll
@@ -51,8 +51,8 @@ define <2 x i64> @v2si64_cmp_gt(<2 x i64> %x, <2 x i64> %y) nounwind readnone {
; CHECK-NEXT: iselgt 5, 4, 3
; CHECK-NEXT: std 5, -8(1)
; CHECK-NEXT: ld 5, -32(1)
-; CHECK-NEXT: cmpd 6, 5
-; CHECK-NEXT: iselgt 3, 4, 3
+; CHECK-NEXT: cmpd 1, 6, 5
+; CHECK-NEXT: isel 3, 4, 3, 5
; CHECK-NEXT: std 3, -16(1)
; CHECK-NEXT: addi 3, 1, -16
; CHECK-NEXT: lxvd2x 0, 0, 3
@@ -74,8 +74,8 @@ define <2 x i64> @v2si64_cmp_gt(<2 x i64> %x, <2 x i64> %y) nounwind readnone {
; CHECK-BE-NEXT: iselgt 5, 4, 3
; CHECK-BE-NEXT: std 5, -8(1)
; CHECK-BE-NEXT: ld 5, -32(1)
-; CHECK-BE-NEXT: cmpd 6, 5
-; CHECK-BE-NEXT: iselgt 3, 4, 3
+; CHECK-BE-NEXT: cmpd 1, 6, 5
+; CHECK-BE-NEXT: isel 3, 4, 3, 5
; CHECK-BE-NEXT: std 3, -16(1)
; CHECK-BE-NEXT: addi 3, 1, -16
; CHECK-BE-NEXT: lxvd2x 34, 0, 3
@@ -104,8 +104,8 @@ define <2 x i64> @v2ui64_cmp_gt(<2 x i64> %x, <2 x i64> %y) nounwind readnone {
; CHECK-NEXT: iselgt 5, 4, 3
; CHECK-NEXT: std 5, -8(1)
; CHECK-NEXT: ld 5, -32(1)
-; CHECK-NEXT: cmpld 6, 5
-; CHECK-NEXT: iselgt 3, 4, 3
+; CHECK-NEXT: cmpld 1, 6, 5
+; CHECK-NEXT: isel 3, 4, 3, 5
; CHECK-NEXT: std 3, -16(1)
; CHECK-NEXT: addi 3, 1, -16
; CHECK-NEXT: lxvd2x 0, 0, 3
@@ -127,8 +127,8 @@ define <2 x i64> @v2ui64_cmp_gt(<2 x i64> %x, <2 x i64> %y) nounwind readnone {
; CHECK-BE-NEXT: iselgt 5, 4, 3
; CHECK-BE-NEXT: std 5, -8(1)
; CHECK-BE-NEXT: ld 5, -32(1)
-; CHECK-BE-NEXT: cmpld 6, 5
-; CHECK-BE-NEXT: iselgt 3, 4, 3
+; CHECK-BE-NEXT: cmpld 1, 6, 5
+; CHECK-BE-NEXT: isel 3, 4, 3, 5
; CHECK-BE-NEXT: std 3, -16(1)
; CHECK-BE-NEXT: addi 3, 1, -16
; CHECK-BE-NEXT: lxvd2x 34, 0, 3
diff --git a/llvm/test/CodeGen/PowerPC/vector-popcnt-128-ult-ugt.ll b/llvm/test/CodeGen/PowerPC/vector-popcnt-128-ult-ugt.ll
index ff7f1fc9029813d..0c96335c0cb609e 100644
--- a/llvm/test/CodeGen/PowerPC/vector-popcnt-128-ult-ugt.ll
+++ b/llvm/test/CodeGen/PowerPC/vector-popcnt-128-ult-ugt.ll
@@ -12178,18 +12178,18 @@ define <2 x i64> @ugt_2_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 2
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 2
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 2
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -12312,18 +12312,18 @@ define <2 x i64> @ult_3_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 3
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 3
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 3
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -12446,18 +12446,18 @@ define <2 x i64> @ugt_3_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 3
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 3
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 3
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -12580,18 +12580,18 @@ define <2 x i64> @ult_4_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 4
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 4
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 4
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -12714,18 +12714,18 @@ define <2 x i64> @ugt_4_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 4
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 4
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 4
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -12848,18 +12848,18 @@ define <2 x i64> @ult_5_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 5
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 5
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 5
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -12982,18 +12982,18 @@ define <2 x i64> @ugt_5_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 5
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 5
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 5
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13116,18 +13116,18 @@ define <2 x i64> @ult_6_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 6
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 6
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 6
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13250,18 +13250,18 @@ define <2 x i64> @ugt_6_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 6
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 6
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 6
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13384,18 +13384,18 @@ define <2 x i64> @ult_7_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 7
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 7
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 7
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13518,18 +13518,18 @@ define <2 x i64> @ugt_7_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 7
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 7
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 7
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13652,18 +13652,18 @@ define <2 x i64> @ult_8_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 8
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 8
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 8
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13786,18 +13786,18 @@ define <2 x i64> @ugt_8_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 8
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 8
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 8
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -13920,18 +13920,18 @@ define <2 x i64> @ult_9_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 9
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 9
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 9
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14054,18 +14054,18 @@ define <2 x i64> @ugt_9_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 9
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 9
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 9
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14188,18 +14188,18 @@ define <2 x i64> @ult_10_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 10
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 10
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 10
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14322,18 +14322,18 @@ define <2 x i64> @ugt_10_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 10
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 10
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 10
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14456,18 +14456,18 @@ define <2 x i64> @ult_11_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 11
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 11
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 11
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14590,18 +14590,18 @@ define <2 x i64> @ugt_11_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 11
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 11
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 11
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14724,18 +14724,18 @@ define <2 x i64> @ult_12_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 12
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 12
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 12
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14858,18 +14858,18 @@ define <2 x i64> @ugt_12_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 12
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 12
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 12
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -14992,18 +14992,18 @@ define <2 x i64> @ult_13_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 13
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 13
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 13
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15126,18 +15126,18 @@ define <2 x i64> @ugt_13_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 13
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 13
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 13
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15260,18 +15260,18 @@ define <2 x i64> @ult_14_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 14
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 14
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 14
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15394,18 +15394,18 @@ define <2 x i64> @ugt_14_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 14
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 14
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 14
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15528,18 +15528,18 @@ define <2 x i64> @ult_15_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 15
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 15
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 15
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15662,18 +15662,18 @@ define <2 x i64> @ugt_15_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 15
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 15
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 15
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15796,18 +15796,18 @@ define <2 x i64> @ult_16_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 16
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 16
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 16
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -15930,18 +15930,18 @@ define <2 x i64> @ugt_16_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 16
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 16
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 16
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16064,18 +16064,18 @@ define <2 x i64> @ult_17_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 17
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 17
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 17
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16198,18 +16198,18 @@ define <2 x i64> @ugt_17_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 17
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 17
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 17
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16332,18 +16332,18 @@ define <2 x i64> @ult_18_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 18
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 18
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 18
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16466,18 +16466,18 @@ define <2 x i64> @ugt_18_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 18
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 18
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 18
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16600,18 +16600,18 @@ define <2 x i64> @ult_19_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 19
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 19
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 19
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16734,18 +16734,18 @@ define <2 x i64> @ugt_19_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 19
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 19
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 19
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -16868,18 +16868,18 @@ define <2 x i64> @ult_20_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 20
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 20
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 20
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17002,18 +17002,18 @@ define <2 x i64> @ugt_20_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 20
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 20
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 20
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17136,18 +17136,18 @@ define <2 x i64> @ult_21_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 21
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 21
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 21
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17270,18 +17270,18 @@ define <2 x i64> @ugt_21_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 21
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 21
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 21
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17404,18 +17404,18 @@ define <2 x i64> @ult_22_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 22
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 22
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 22
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17538,18 +17538,18 @@ define <2 x i64> @ugt_22_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 22
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 22
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 22
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17672,18 +17672,18 @@ define <2 x i64> @ult_23_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 23
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 23
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 23
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17806,18 +17806,18 @@ define <2 x i64> @ugt_23_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 23
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 23
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 23
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -17940,18 +17940,18 @@ define <2 x i64> @ult_24_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 24
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 24
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 24
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18074,18 +18074,18 @@ define <2 x i64> @ugt_24_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 24
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 24
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 24
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18208,18 +18208,18 @@ define <2 x i64> @ult_25_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 25
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 25
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 25
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18342,18 +18342,18 @@ define <2 x i64> @ugt_25_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 25
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 25
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 25
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18476,18 +18476,18 @@ define <2 x i64> @ult_26_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 26
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 26
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 26
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18610,18 +18610,18 @@ define <2 x i64> @ugt_26_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 26
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 26
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 26
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18744,18 +18744,18 @@ define <2 x i64> @ult_27_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 27
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 27
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 27
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -18878,18 +18878,18 @@ define <2 x i64> @ugt_27_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 27
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 27
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 27
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19012,18 +19012,18 @@ define <2 x i64> @ult_28_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 28
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 28
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 28
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19146,18 +19146,18 @@ define <2 x i64> @ugt_28_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 28
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 28
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 28
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19280,18 +19280,18 @@ define <2 x i64> @ult_29_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 29
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 29
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 29
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19414,18 +19414,18 @@ define <2 x i64> @ugt_29_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 29
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 29
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 29
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19548,18 +19548,18 @@ define <2 x i64> @ult_30_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 30
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 30
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 30
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19682,18 +19682,18 @@ define <2 x i64> @ugt_30_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 30
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 30
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 30
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19816,18 +19816,18 @@ define <2 x i64> @ult_31_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 31
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 31
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 31
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -19950,18 +19950,18 @@ define <2 x i64> @ugt_31_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 31
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 31
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 31
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20084,18 +20084,18 @@ define <2 x i64> @ult_32_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 32
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 32
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 32
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20218,18 +20218,18 @@ define <2 x i64> @ugt_32_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 32
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 32
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 32
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20352,18 +20352,18 @@ define <2 x i64> @ult_33_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 33
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 33
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 33
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20486,18 +20486,18 @@ define <2 x i64> @ugt_33_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 33
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 33
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 33
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20620,18 +20620,18 @@ define <2 x i64> @ult_34_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 34
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 34
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 34
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20754,18 +20754,18 @@ define <2 x i64> @ugt_34_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 34
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 34
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 34
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -20888,18 +20888,18 @@ define <2 x i64> @ult_35_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 35
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 35
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 35
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21022,18 +21022,18 @@ define <2 x i64> @ugt_35_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 35
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 35
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 35
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21156,18 +21156,18 @@ define <2 x i64> @ult_36_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 36
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 36
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 36
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21290,18 +21290,18 @@ define <2 x i64> @ugt_36_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 36
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 36
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 36
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21424,18 +21424,18 @@ define <2 x i64> @ult_37_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 37
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 37
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 37
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21558,18 +21558,18 @@ define <2 x i64> @ugt_37_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 37
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 37
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 37
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21692,18 +21692,18 @@ define <2 x i64> @ult_38_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 38
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 38
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 38
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21826,18 +21826,18 @@ define <2 x i64> @ugt_38_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 38
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 38
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 38
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -21960,18 +21960,18 @@ define <2 x i64> @ult_39_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 39
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 39
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 39
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22094,18 +22094,18 @@ define <2 x i64> @ugt_39_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 39
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 39
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 39
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22228,18 +22228,18 @@ define <2 x i64> @ult_40_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 40
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 40
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 40
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22362,18 +22362,18 @@ define <2 x i64> @ugt_40_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 40
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 40
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 40
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22496,18 +22496,18 @@ define <2 x i64> @ult_41_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 41
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 41
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 41
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22630,18 +22630,18 @@ define <2 x i64> @ugt_41_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 41
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 41
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 41
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22764,18 +22764,18 @@ define <2 x i64> @ult_42_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 42
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 42
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 42
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -22898,18 +22898,18 @@ define <2 x i64> @ugt_42_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 42
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 42
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 42
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23032,18 +23032,18 @@ define <2 x i64> @ult_43_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 43
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 43
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 43
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23166,18 +23166,18 @@ define <2 x i64> @ugt_43_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 43
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 43
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 43
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23300,18 +23300,18 @@ define <2 x i64> @ult_44_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 44
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 44
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 44
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23434,18 +23434,18 @@ define <2 x i64> @ugt_44_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 44
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 44
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 44
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23568,18 +23568,18 @@ define <2 x i64> @ult_45_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 45
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 45
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 45
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23702,18 +23702,18 @@ define <2 x i64> @ugt_45_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 45
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 45
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 45
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23836,18 +23836,18 @@ define <2 x i64> @ult_46_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 46
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 46
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 46
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -23970,18 +23970,18 @@ define <2 x i64> @ugt_46_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 46
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 46
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 46
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24104,18 +24104,18 @@ define <2 x i64> @ult_47_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 47
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 47
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 47
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24238,18 +24238,18 @@ define <2 x i64> @ugt_47_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 47
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 47
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 47
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24372,18 +24372,18 @@ define <2 x i64> @ult_48_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 48
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 48
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 48
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24506,18 +24506,18 @@ define <2 x i64> @ugt_48_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 48
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 48
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 48
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24640,18 +24640,18 @@ define <2 x i64> @ult_49_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 49
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 49
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 49
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24774,18 +24774,18 @@ define <2 x i64> @ugt_49_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 49
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 49
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 49
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -24908,18 +24908,18 @@ define <2 x i64> @ult_50_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 50
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 50
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 50
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25042,18 +25042,18 @@ define <2 x i64> @ugt_50_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 50
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 50
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 50
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25176,18 +25176,18 @@ define <2 x i64> @ult_51_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 51
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 51
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 51
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25310,18 +25310,18 @@ define <2 x i64> @ugt_51_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 51
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 51
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 51
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25444,18 +25444,18 @@ define <2 x i64> @ult_52_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 52
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 52
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 52
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25578,18 +25578,18 @@ define <2 x i64> @ugt_52_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 52
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 52
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 52
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25712,18 +25712,18 @@ define <2 x i64> @ult_53_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 53
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 53
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 53
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25846,18 +25846,18 @@ define <2 x i64> @ugt_53_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 53
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 53
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 53
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -25980,18 +25980,18 @@ define <2 x i64> @ult_54_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 54
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 54
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 54
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26114,18 +26114,18 @@ define <2 x i64> @ugt_54_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 54
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 54
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 54
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26248,18 +26248,18 @@ define <2 x i64> @ult_55_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 55
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 55
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 55
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26382,18 +26382,18 @@ define <2 x i64> @ugt_55_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 55
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 55
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 55
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26516,18 +26516,18 @@ define <2 x i64> @ult_56_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 56
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 56
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 56
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26650,18 +26650,18 @@ define <2 x i64> @ugt_56_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 56
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 56
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 56
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26784,18 +26784,18 @@ define <2 x i64> @ult_57_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 57
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 57
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 57
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -26918,18 +26918,18 @@ define <2 x i64> @ugt_57_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 57
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 57
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 57
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27052,18 +27052,18 @@ define <2 x i64> @ult_58_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 58
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 58
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 58
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27186,18 +27186,18 @@ define <2 x i64> @ugt_58_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 58
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 58
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 58
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27320,18 +27320,18 @@ define <2 x i64> @ult_59_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 59
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 59
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 59
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27454,18 +27454,18 @@ define <2 x i64> @ugt_59_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 59
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 59
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 59
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27588,18 +27588,18 @@ define <2 x i64> @ult_60_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 60
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 60
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 60
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27722,18 +27722,18 @@ define <2 x i64> @ugt_60_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 60
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 60
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 60
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27856,18 +27856,18 @@ define <2 x i64> @ult_61_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 61
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 61
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 61
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -27990,18 +27990,18 @@ define <2 x i64> @ugt_61_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 61
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 61
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 61
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -28124,18 +28124,18 @@ define <2 x i64> @ult_62_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 62
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 62
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 62
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -28258,18 +28258,18 @@ define <2 x i64> @ugt_62_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 62
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 62
+; PWR7-NEXT: isel 3, 5, 4, 5
; PWR7-NEXT: iselgt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 62
-; PWR7-NEXT: iselgt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
@@ -28392,18 +28392,18 @@ define <2 x i64> @ult_63_v2i64(<2 x i64> %0) {
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
-; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: ld 3, -32(1)
-; PWR7-NEXT: popcntd 4, 4
+; PWR7-NEXT: ld 4, -24(1)
; PWR7-NEXT: popcntd 3, 3
+; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 4, 63
; PWR7-NEXT: li 4, 0
+; PWR7-NEXT: cmpldi 1, 3, 63
+; PWR7-NEXT: isel 3, 5, 4, 4
; PWR7-NEXT: isellt 6, 5, 4
-; PWR7-NEXT: cmpldi 3, 63
-; PWR7-NEXT: isellt 3, 5, 4
-; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
+; PWR7-NEXT: std 6, -8(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
diff --git a/llvm/test/CodeGen/PowerPC/vsx.ll b/llvm/test/CodeGen/PowerPC/vsx.ll
index 32cbfd6d810acca..52851f2d78ae3ca 100644
--- a/llvm/test/CodeGen/PowerPC/vsx.ll
+++ b/llvm/test/CodeGen/PowerPC/vsx.ll
@@ -2136,8 +2136,8 @@ define <2 x i1> @test67(<2 x i64> %a, <2 x i64> %b) {
; CHECK-NEXT: isellt r5, r4, r3
; CHECK-NEXT: std r5, -8(r1)
; CHECK-NEXT: ld r5, -32(r1)
-; CHECK-NEXT: cmpld r6, r5
-; CHECK-NEXT: isellt r3, r4, r3
+; CHECK-NEXT: cmpld cr1, r6, r5
+; CHECK-NEXT: isel r3, r4, r3, 4*cr1+lt
; CHECK-NEXT: std r3, -16(r1)
; CHECK-NEXT: addi r3, r1, -16
; CHECK-NEXT: lxvd2x v2, 0, r3
@@ -2158,8 +2158,8 @@ define <2 x i1> @test67(<2 x i64> %a, <2 x i64> %b) {
; CHECK-REG-NEXT: isellt r5, r4, r3
; CHECK-REG-NEXT: std r5, -8(r1)
; CHECK-REG-NEXT: ld r5, -32(r1)
-; CHECK-REG-NEXT: cmpld r6, r5
-; CHECK-REG-NEXT: isellt r3, r4, r3
+; CHECK-REG-NEXT: cmpld cr1, r6, r5
+; CHECK-REG-NEXT: isel r3, r4, r3, 4*cr1+lt
; CHECK-REG-NEXT: std r3, -16(r1)
; CHECK-REG-NEXT: addi r3, r1, -16
; CHECK-REG-NEXT: lxvd2x v2, 0, r3
>From 57b6171c8cbc7c8492f66cbc564279e7d13e3df5 Mon Sep 17 00:00:00 2001
From: Kai Luo <lkail at cn.ibm.com>
Date: Wed, 18 Oct 2023 02:38:41 +0000
Subject: [PATCH 4/5] Add FIXME
---
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
index 7676ded1a1cd33d..b542dd1994ef4e7 100644
--- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -657,6 +657,12 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
if (!MO.isReg() || !MO.getReg() || !MO.getReg().isVirtual() ||
!MO.isDef() || !VRM->hasPhys(MO.getReg()))
continue;
+ // FIXME: If PhysReg interferes with VirtReg, we should avoid using
+ // PhysReg as hint to avoid potential split. Current
+ // getRegAllocationHints doesn't interface LiveInterval, so the
+ // interference check is not viable. In the other side, CRs don't live
+ // cross multiple BBs in common cases, so checking interference might
+ // help rare seen cases.
MCPhysReg PhysReg = VRM->getPhys(MO.getReg());
llvm::copy_if(
TRI->superregs_inclusive(PhysReg),
>From d6ec3aaf628a118372947be721bfda8cde736510 Mon Sep 17 00:00:00 2001
From: Kai Luo <lkail at cn.ibm.com>
Date: Tue, 21 Nov 2023 03:16:28 +0000
Subject: [PATCH 5/5] Do not skip
---
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | 7 ------
.../PowerPC/builtins-ppc-xlcompat-maxmin.ll | 24 +++++++++----------
.../CodeGen/PowerPC/common-chain-aix32.ll | 14 +++++------
llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll | 12 +++++-----
llvm/test/CodeGen/PowerPC/is_fpclass.ll | 12 +++++-----
llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll | 20 ++++++++--------
llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll | 24 +++++++++----------
llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll | 20 ++++++++--------
.../PowerPC/urem-seteq-illegal-types.ll | 12 +++++-----
llvm/test/CodeGen/PowerPC/vec-min-max.ll | 6 ++---
llvm/test/CodeGen/PowerPC/vsx_builtins.ll | 6 ++---
11 files changed, 75 insertions(+), 82 deletions(-)
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
index b542dd1994ef4e7..461c676767e7260 100644
--- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -642,17 +642,10 @@ bool PPCRegisterInfo::getRegAllocationHints(Register VirtReg,
(RegClass->hasSuperClassEq(&PPC::CRRCRegClass) ||
RegClass->hasSuperClassEq(&PPC::CRBITRCRegClass))) {
std::set<MCPhysReg> ModifiedRegisters;
- bool Skip = true;
- // Scan from the last instruction writes VirtReg to the beginning of the
- // MBB.
for (MachineInstr &MI :
llvm::make_range(LastUseMBB->rbegin(), LastUseMBB->rend())) {
if (MI.isDebugInstr())
continue;
- if (MI.modifiesRegister(VirtReg, TRI))
- Skip = false;
- if (Skip)
- continue;
for (MachineOperand &MO : MI.operands()) {
if (!MO.isReg() || !MO.getReg() || !MO.getReg().isVirtual() ||
!MO.isDef() || !VRM->hasPhys(MO.getReg()))
diff --git a/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-maxmin.ll b/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-maxmin.ll
index fc4e1729036b87f..52093c5284d4c9d 100644
--- a/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-maxmin.ll
+++ b/llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-maxmin.ll
@@ -10,8 +10,8 @@ define ppc_fp128 @test_maxfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: fcmpu 0, 6, 4
; CHECK-NEXT: fcmpu 1, 5, 3
-; CHECK-NEXT: crand 20, 6, 1
-; CHECK-NEXT: cror 20, 5, 20
+; CHECK-NEXT: crand 24, 6, 1
+; CHECK-NEXT: cror 20, 5, 24
; CHECK-NEXT: bc 12, 20, .LBB0_2
; CHECK-NEXT: # %bb.1: # %entry
; CHECK-NEXT: fmr 6, 4
@@ -22,8 +22,8 @@ define ppc_fp128 @test_maxfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128
; CHECK-NEXT: fmr 5, 3
; CHECK-NEXT: .LBB0_4: # %entry
; CHECK-NEXT: fcmpu 1, 5, 1
-; CHECK-NEXT: crand 20, 6, 1
-; CHECK-NEXT: cror 20, 5, 20
+; CHECK-NEXT: crand 24, 6, 1
+; CHECK-NEXT: cror 20, 5, 24
; CHECK-NEXT: bc 12, 20, .LBB0_6
; CHECK-NEXT: # %bb.5: # %entry
; CHECK-NEXT: fmr 6, 2
@@ -34,8 +34,8 @@ define ppc_fp128 @test_maxfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128
; CHECK-NEXT: fmr 5, 1
; CHECK-NEXT: .LBB0_8: # %entry
; CHECK-NEXT: fcmpu 1, 5, 7
-; CHECK-NEXT: crand 20, 6, 1
-; CHECK-NEXT: cror 20, 5, 20
+; CHECK-NEXT: crand 24, 6, 1
+; CHECK-NEXT: cror 20, 5, 24
; CHECK-NEXT: bc 12, 20, .LBB0_10
; CHECK-NEXT: # %bb.9: # %entry
; CHECK-NEXT: fmr 5, 7
@@ -136,8 +136,8 @@ define ppc_fp128 @test_minfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: fcmpu 0, 6, 4
; CHECK-NEXT: fcmpu 1, 5, 3
-; CHECK-NEXT: crand 20, 6, 0
-; CHECK-NEXT: cror 20, 4, 20
+; CHECK-NEXT: crand 24, 6, 0
+; CHECK-NEXT: cror 20, 4, 24
; CHECK-NEXT: bc 12, 20, .LBB3_2
; CHECK-NEXT: # %bb.1: # %entry
; CHECK-NEXT: fmr 6, 4
@@ -148,8 +148,8 @@ define ppc_fp128 @test_minfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128
; CHECK-NEXT: fmr 5, 3
; CHECK-NEXT: .LBB3_4: # %entry
; CHECK-NEXT: fcmpu 1, 5, 1
-; CHECK-NEXT: crand 20, 6, 0
-; CHECK-NEXT: cror 20, 4, 20
+; CHECK-NEXT: crand 24, 6, 0
+; CHECK-NEXT: cror 20, 4, 24
; CHECK-NEXT: bc 12, 20, .LBB3_6
; CHECK-NEXT: # %bb.5: # %entry
; CHECK-NEXT: fmr 6, 2
@@ -160,8 +160,8 @@ define ppc_fp128 @test_minfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128
; CHECK-NEXT: fmr 5, 1
; CHECK-NEXT: .LBB3_8: # %entry
; CHECK-NEXT: fcmpu 1, 5, 7
-; CHECK-NEXT: crand 20, 6, 0
-; CHECK-NEXT: cror 20, 4, 20
+; CHECK-NEXT: crand 24, 6, 0
+; CHECK-NEXT: cror 20, 4, 24
; CHECK-NEXT: bc 12, 20, .LBB3_10
; CHECK-NEXT: # %bb.9: # %entry
; CHECK-NEXT: fmr 5, 7
diff --git a/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll b/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll
index 35ddcfd9ba6d643..b961d07e415773c 100644
--- a/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll
+++ b/llvm/test/CodeGen/PowerPC/common-chain-aix32.ll
@@ -38,10 +38,10 @@ define i64 @two_chain_same_offset_succ_i32(ptr %p, i32 %offset, i32 %base1, i64
; CHECK-LABEL: two_chain_same_offset_succ_i32:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmplwi r6, 0
-; CHECK-NEXT: cmpwi cr1, r6, 0
-; CHECK-NEXT: crandc 4*cr5+lt, 4*cr1+lt, eq
+; CHECK-NEXT: cmpwi cr5, r6, 0
; CHECK-NEXT: cmpwi cr1, r7, 0
-; CHECK-NEXT: bc 12, 4*cr5+lt, L..BB0_6
+; CHECK-NEXT: crandc 4*cr6+lt, 4*cr5+lt, eq
+; CHECK-NEXT: bc 12, 4*cr6+lt, L..BB0_6
; CHECK-NEXT: # %bb.1: # %entry
; CHECK-NEXT: crand 4*cr5+lt, eq, 4*cr1+eq
; CHECK-NEXT: bc 12, 4*cr5+lt, L..BB0_6
@@ -74,11 +74,11 @@ define i64 @two_chain_same_offset_succ_i32(ptr %p, i32 %offset, i32 %base1, i64
; CHECK-NEXT: addze r3, r3
; CHECK-NEXT: addic r11, r11, 1
; CHECK-NEXT: addze r10, r10
-; CHECK-NEXT: cmplw r10, r6
-; CHECK-NEXT: cmpw cr1, r10, r6
-; CHECK-NEXT: crandc 4*cr5+lt, 4*cr1+lt, eq
; CHECK-NEXT: cmplw cr1, r11, r7
-; CHECK-NEXT: bc 12, 4*cr5+lt, L..BB0_3
+; CHECK-NEXT: cmplw r10, r6
+; CHECK-NEXT: cmpw cr5, r10, r6
+; CHECK-NEXT: crandc 4*cr6+lt, 4*cr5+lt, eq
+; CHECK-NEXT: bc 12, 4*cr6+lt, L..BB0_3
; CHECK-NEXT: # %bb.4: # %for.body
; CHECK-NEXT: #
; CHECK-NEXT: crand 4*cr5+lt, eq, 4*cr1+lt
diff --git a/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll b/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll
index cba42ecbae5c95c..f4542f39f261d3a 100644
--- a/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll
+++ b/llvm/test/CodeGen/PowerPC/fp-to-int-to-fp.ll
@@ -70,7 +70,7 @@ define float @fooul(float %X) #0 {
; PPC64-NEXT: lfs 0, .LCPI2_0 at toc@l(3)
; PPC64-NEXT: rldic 4, 4, 63, 0
; PPC64-NEXT: fsubs 2, 1, 0
-; PPC64-NEXT: fcmpu 0, 1, 0
+; PPC64-NEXT: fcmpu 1, 1, 0
; PPC64-NEXT: fctidz 2, 2
; PPC64-NEXT: stfd 2, -8(1)
; PPC64-NEXT: fctidz 2, 1
@@ -78,7 +78,7 @@ define float @fooul(float %X) #0 {
; PPC64-NEXT: ld 3, -8(1)
; PPC64-NEXT: ld 5, -16(1)
; PPC64-NEXT: xor 3, 3, 4
-; PPC64-NEXT: bc 12, 0, .LBB2_1
+; PPC64-NEXT: bc 12, 4, .LBB2_1
; PPC64-NEXT: b .LBB2_2
; PPC64-NEXT: .LBB2_1: # %entry
; PPC64-NEXT: addi 3, 5, 0
@@ -106,15 +106,15 @@ define float @fooul(float %X) #0 {
; PPC64-NEXT: rldicl 5, 5, 53, 11
; PPC64-NEXT: std 4, -32(1)
; PPC64-NEXT: rldicl 4, 5, 11, 1
-; PPC64-NEXT: cmpldi 1, 7, 1
-; PPC64-NEXT: bc 12, 5, .LBB2_6
+; PPC64-NEXT: cmpldi 5, 7, 1
+; PPC64-NEXT: bc 12, 21, .LBB2_6
; PPC64-NEXT: # %bb.5: # %entry
; PPC64-NEXT: ori 4, 6, 0
; PPC64-NEXT: b .LBB2_6
; PPC64-NEXT: .LBB2_6: # %entry
-; PPC64-NEXT: cmpdi 5, 3, 0
+; PPC64-NEXT: cmpdi 6, 3, 0
; PPC64-NEXT: std 4, -24(1)
-; PPC64-NEXT: bc 12, 20, .LBB2_8
+; PPC64-NEXT: bc 12, 24, .LBB2_8
; PPC64-NEXT: # %bb.7: # %entry
; PPC64-NEXT: lfd 0, -32(1)
; PPC64-NEXT: fcfid 0, 0
diff --git a/llvm/test/CodeGen/PowerPC/is_fpclass.ll b/llvm/test/CodeGen/PowerPC/is_fpclass.ll
index e89b34465a76b2a..21e28004509be4f 100644
--- a/llvm/test/CodeGen/PowerPC/is_fpclass.ll
+++ b/llvm/test/CodeGen/PowerPC/is_fpclass.ll
@@ -420,15 +420,15 @@ define i1 @isclass_00d_double(double %x) nounwind {
; CHECK-LABEL: isclass_00d_double:
; CHECK: # %bb.0:
; CHECK-NEXT: mffprd 3, 1
-; CHECK-NEXT: xststdcdp 0, 1, 127
-; CHECK-NEXT: xststdcdp 1, 1, 64
-; CHECK-NEXT: xststdcdp 7, 1, 16
+; CHECK-NEXT: xststdcdp 1, 1, 127
+; CHECK-NEXT: xststdcdp 6, 1, 64
; CHECK-NEXT: rldicl 3, 3, 32, 32
-; CHECK-NEXT: crandc 20, 0, 2
+; CHECK-NEXT: crandc 20, 4, 6
; CHECK-NEXT: andis. 3, 3, 8
; CHECK-NEXT: li 3, 1
-; CHECK-NEXT: crand 24, 6, 2
-; CHECK-NEXT: cror 21, 30, 24
+; CHECK-NEXT: crand 28, 26, 2
+; CHECK-NEXT: xststdcdp 0, 1, 16
+; CHECK-NEXT: cror 21, 2, 28
; CHECK-NEXT: crnor 20, 21, 20
; CHECK-NEXT: isel 3, 0, 3, 20
; CHECK-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll b/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll
index f9d2c259a4c197b..69f018452748578 100644
--- a/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll
@@ -53,11 +53,11 @@ declare i32 @llvm.fshl.i32(i32, i32, i32) #0
define dso_local i64 @rotatemask64(i64 noundef %word) local_unnamed_addr #0 {
; AIX32-LABEL: rotatemask64:
; AIX32: # %bb.0: # %entry
-; AIX32-NEXT: cmplwi r3, 0
+; AIX32-NEXT: cmplwi cr1, r3, 0
; AIX32-NEXT: cntlzw r6, r4
; AIX32-NEXT: addi r6, r6, 32
; AIX32-NEXT: cntlzw r5, r3
-; AIX32-NEXT: iseleq r5, r6, r5
+; AIX32-NEXT: isel r5, r6, r5, 4*cr1+eq
; AIX32-NEXT: andi. r6, r5, 32
; AIX32-NEXT: clrlwi r5, r5, 27
; AIX32-NEXT: iseleq r6, r3, r4
@@ -101,11 +101,11 @@ declare i64 @llvm.fshl.i64(i64, i64, i64) #1
define dso_local i64 @rotatemask64_2(i64 noundef %word) local_unnamed_addr #0 {
; AIX32-LABEL: rotatemask64_2:
; AIX32: # %bb.0: # %entry
-; AIX32-NEXT: cmplwi r3, 0
+; AIX32-NEXT: cmplwi cr1, r3, 0
; AIX32-NEXT: cntlzw r6, r4
; AIX32-NEXT: addi r6, r6, 32
; AIX32-NEXT: cntlzw r5, r3
-; AIX32-NEXT: iseleq r5, r6, r5
+; AIX32-NEXT: isel r5, r6, r5, 4*cr1+eq
; AIX32-NEXT: andi. r6, r5, 32
; AIX32-NEXT: clrlwi r5, r5, 27
; AIX32-NEXT: iseleq r6, r3, r4
@@ -147,11 +147,11 @@ entry:
define dso_local i64 @rotatemask64_3(i64 noundef %word) local_unnamed_addr #0 {
; AIX32-LABEL: rotatemask64_3:
; AIX32: # %bb.0: # %entry
-; AIX32-NEXT: cmplwi r3, 0
+; AIX32-NEXT: cmplwi cr1, r3, 0
; AIX32-NEXT: cntlzw r6, r4
; AIX32-NEXT: addi r6, r6, 32
; AIX32-NEXT: cntlzw r5, r3
-; AIX32-NEXT: iseleq r5, r6, r5
+; AIX32-NEXT: isel r5, r6, r5, 4*cr1+eq
; AIX32-NEXT: andi. r6, r5, 32
; AIX32-NEXT: clrlwi r5, r5, 27
; AIX32-NEXT: iseleq r6, r3, r4
@@ -307,12 +307,12 @@ define dso_local i64 @twomasks(i64 noundef %word) local_unnamed_addr #0 {
; AIX32: # %bb.0: # %entry
; AIX32-NEXT: mflr r0
; AIX32-NEXT: stwu r1, -64(r1)
-; AIX32-NEXT: cmplwi r3, 0
+; AIX32-NEXT: cmplwi cr1, r3, 0
; AIX32-NEXT: cntlzw r6, r4
; AIX32-NEXT: stw r0, 72(r1)
; AIX32-NEXT: addi r6, r6, 32
; AIX32-NEXT: cntlzw r5, r3
-; AIX32-NEXT: iseleq r5, r6, r5
+; AIX32-NEXT: isel r5, r6, r5, 4*cr1+eq
; AIX32-NEXT: andi. r6, r5, 32
; AIX32-NEXT: clrlwi r5, r5, 27
; AIX32-NEXT: iseleq r6, r3, r4
@@ -397,12 +397,12 @@ define dso_local i64 @tworotates(i64 noundef %word) local_unnamed_addr #0 {
; AIX32: # %bb.0: # %entry
; AIX32-NEXT: mflr r0
; AIX32-NEXT: stwu r1, -64(r1)
-; AIX32-NEXT: cmplwi r3, 0
+; AIX32-NEXT: cmplwi cr1, r3, 0
; AIX32-NEXT: cntlzw r6, r4
; AIX32-NEXT: stw r0, 72(r1)
; AIX32-NEXT: addi r6, r6, 32
; AIX32-NEXT: cntlzw r5, r3
-; AIX32-NEXT: iseleq r5, r6, r5
+; AIX32-NEXT: isel r5, r6, r5, 4*cr1+eq
; AIX32-NEXT: andi. r6, r5, 32
; AIX32-NEXT: clrlwi r5, r5, 27
; AIX32-NEXT: iseleq r6, r3, r4
diff --git a/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll b/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
index 2b68215cf586bd1..7b8cfa7be061636 100644
--- a/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
@@ -1373,16 +1373,16 @@ define void @setbn4(i128 %0, ptr %sel.out) {
; CHECK-LABEL: setbn4:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: li r6, 1
-; CHECK-NEXT: cmpdi cr1, r3, 0
+; CHECK-NEXT: cmpdi cr6, r3, 0
; CHECK-NEXT: li r3, 1
; CHECK-NEXT: rldic r6, r6, 48, 15
-; CHECK-NEXT: cmpld r4, r6
-; CHECK-NEXT: crandc 4*cr5+lt, gt, eq
-; CHECK-NEXT: crandc 4*cr6+lt, eq, 4*cr1+eq
-; CHECK-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
+; CHECK-NEXT: cmpld cr1, r4, r6
; CHECK-NEXT: rldicl. r4, r4, 16, 48
; CHECK-NEXT: li r4, -1
-; CHECK-NEXT: isel r3, 0, r3, 4*cr7+lt
+; CHECK-NEXT: crandc 4*cr5+lt, 4*cr1+gt, 4*cr1+eq
+; CHECK-NEXT: crandc 4*cr7+lt, 4*cr1+eq, 4*cr6+eq
+; CHECK-NEXT: crnor 4*cr5+lt, 4*cr7+lt, 4*cr5+lt
+; CHECK-NEXT: isel r3, 0, r3, 4*cr5+lt
; CHECK-NEXT: iseleq r3, r4, r3
; CHECK-NEXT: stw r3, 0(r5)
; CHECK-NEXT: blr
@@ -1390,16 +1390,16 @@ define void @setbn4(i128 %0, ptr %sel.out) {
; CHECK-PWR8-LABEL: setbn4:
; CHECK-PWR8: # %bb.0: # %entry
; CHECK-PWR8-NEXT: li r6, 1
-; CHECK-PWR8-NEXT: cmpdi cr1, r3, 0
+; CHECK-PWR8-NEXT: cmpdi cr6, r3, 0
; CHECK-PWR8-NEXT: li r3, 1
; CHECK-PWR8-NEXT: rldic r6, r6, 48, 15
-; CHECK-PWR8-NEXT: cmpld r4, r6
-; CHECK-PWR8-NEXT: crandc 4*cr5+lt, gt, eq
-; CHECK-PWR8-NEXT: crandc 4*cr6+lt, eq, 4*cr1+eq
+; CHECK-PWR8-NEXT: cmpld cr1, r4, r6
; CHECK-PWR8-NEXT: rldicl. r4, r4, 16, 48
; CHECK-PWR8-NEXT: li r4, -1
-; CHECK-PWR8-NEXT: crnor 4*cr7+lt, 4*cr6+lt, 4*cr5+lt
-; CHECK-PWR8-NEXT: isel r3, 0, r3, 4*cr7+lt
+; CHECK-PWR8-NEXT: crandc 4*cr5+lt, 4*cr1+gt, 4*cr1+eq
+; CHECK-PWR8-NEXT: crandc 4*cr7+lt, 4*cr1+eq, 4*cr6+eq
+; CHECK-PWR8-NEXT: crnor 4*cr5+lt, 4*cr7+lt, 4*cr5+lt
+; CHECK-PWR8-NEXT: isel r3, 0, r3, 4*cr5+lt
; CHECK-PWR8-NEXT: iseleq r3, r4, r3
; CHECK-PWR8-NEXT: stw r3, 0(r5)
; CHECK-PWR8-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll b/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll
index 501182ca64a6dd7..a522c9176fcbf8e 100644
--- a/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll
+++ b/llvm/test/CodeGen/PowerPC/select-i1-vs-i1.ll
@@ -1628,11 +1628,11 @@ define ppc_fp128 @testppc_fp128eq(ppc_fp128 %c1, ppc_fp128 %c2, ppc_fp128 %c3, p
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: fcmpu 0, 6, 8
; CHECK-NEXT: fcmpu 1, 5, 7
-; CHECK-NEXT: crand 20, 6, 2
-; CHECK-NEXT: fcmpu 6, 2, 4
-; CHECK-NEXT: fcmpu 7, 1, 3
-; CHECK-NEXT: crand 21, 30, 26
-; CHECK-NEXT: crxor 20, 21, 20
+; CHECK-NEXT: crand 24, 6, 2
+; CHECK-NEXT: fcmpu 7, 2, 4
+; CHECK-NEXT: fcmpu 0, 1, 3
+; CHECK-NEXT: crand 20, 2, 30
+; CHECK-NEXT: crxor 20, 20, 24
; CHECK-NEXT: bc 12, 20, .LBB50_2
; CHECK-NEXT: # %bb.1: # %entry
; CHECK-NEXT: fmr 11, 9
@@ -1649,11 +1649,11 @@ define ppc_fp128 @testppc_fp128eq(ppc_fp128 %c1, ppc_fp128 %c2, ppc_fp128 %c3, p
; CHECK-NO-ISEL: # %bb.0: # %entry
; CHECK-NO-ISEL-NEXT: fcmpu 0, 6, 8
; CHECK-NO-ISEL-NEXT: fcmpu 1, 5, 7
-; CHECK-NO-ISEL-NEXT: crand 20, 6, 2
-; CHECK-NO-ISEL-NEXT: fcmpu 6, 2, 4
-; CHECK-NO-ISEL-NEXT: fcmpu 7, 1, 3
-; CHECK-NO-ISEL-NEXT: crand 21, 30, 26
-; CHECK-NO-ISEL-NEXT: crxor 20, 21, 20
+; CHECK-NO-ISEL-NEXT: crand 24, 6, 2
+; CHECK-NO-ISEL-NEXT: fcmpu 7, 2, 4
+; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 3
+; CHECK-NO-ISEL-NEXT: crand 20, 2, 30
+; CHECK-NO-ISEL-NEXT: crxor 20, 20, 24
; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB50_2
; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry
; CHECK-NO-ISEL-NEXT: fmr 11, 9
diff --git a/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll b/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll
index 444c2723fd4657d..0a1d833781bcccf 100644
--- a/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll
+++ b/llvm/test/CodeGen/PowerPC/urem-seteq-illegal-types.ll
@@ -241,14 +241,14 @@ define i1 @test_urem_oversized(i66 %X) nounwind {
; PPC-NEXT: add 4, 4, 7
; PPC-NEXT: add 3, 4, 3
; PPC-NEXT: rlwimi 10, 3, 31, 0, 0
-; PPC-NEXT: cmplw 5, 11
-; PPC-NEXT: cmplwi 1, 10, 13
+; PPC-NEXT: cmplw 1, 5, 11
+; PPC-NEXT: cmplwi 5, 10, 13
; PPC-NEXT: rlwinm 3, 3, 31, 31, 31
-; PPC-NEXT: crand 20, 6, 0
-; PPC-NEXT: crandc 24, 4, 6
+; PPC-NEXT: crand 24, 22, 4
+; PPC-NEXT: crandc 28, 20, 22
; PPC-NEXT: rlwimi. 3, 6, 1, 30, 30
-; PPC-NEXT: cror 28, 20, 24
-; PPC-NEXT: crnand 20, 2, 28
+; PPC-NEXT: cror 20, 24, 28
+; PPC-NEXT: crnand 20, 2, 20
; PPC-NEXT: li 3, 1
; PPC-NEXT: bc 12, 20, .LBB5_1
; PPC-NEXT: blr
diff --git a/llvm/test/CodeGen/PowerPC/vec-min-max.ll b/llvm/test/CodeGen/PowerPC/vec-min-max.ll
index de1790c5d103ea4..5fb783e530547a0 100644
--- a/llvm/test/CodeGen/PowerPC/vec-min-max.ll
+++ b/llvm/test/CodeGen/PowerPC/vec-min-max.ll
@@ -245,12 +245,12 @@ define i128 @invalidv1i128(<2 x i128> %v1, <2 x i128> %v2) {
; CHECK-NEXT: cmpld 4, 3
; CHECK-NEXT: xxswapd 0, 36
; CHECK-NEXT: xxswapd 1, 34
-; CHECK-NEXT: cmpd 1, 4, 3
+; CHECK-NEXT: cmpd 5, 4, 3
; CHECK-NEXT: mffprd 3, 0
; CHECK-NEXT: mffprd 4, 1
-; CHECK-NEXT: crandc 20, 4, 2
; CHECK-NEXT: cmpld 1, 4, 3
-; CHECK-NEXT: bc 12, 20, .LBB12_3
+; CHECK-NEXT: crandc 24, 20, 2
+; CHECK-NEXT: bc 12, 24, .LBB12_3
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: crand 20, 2, 4
; CHECK-NEXT: bc 12, 20, .LBB12_3
diff --git a/llvm/test/CodeGen/PowerPC/vsx_builtins.ll b/llvm/test/CodeGen/PowerPC/vsx_builtins.ll
index 694981b67a6c079..049f7e92fd7cc3c 100644
--- a/llvm/test/CodeGen/PowerPC/vsx_builtins.ll
+++ b/llvm/test/CodeGen/PowerPC/vsx_builtins.ll
@@ -139,10 +139,10 @@ declare i32 @llvm.ppc.vsx.xvtsqrtsp(<4 x float>)
define i32 @xvtdivdp_andi(<2 x double> %a, <2 x double> %b) {
; CHECK-LABEL: xvtdivdp_andi:
; CHECK: # %bb.0: # %entry
-; CHECK-NEXT: xvtdivdp cr0, v2, v3
+; CHECK-NEXT: xvtdivdp cr1, v2, v3
; CHECK-NEXT: li r4, 222
-; CHECK-NEXT: mfocrf r3, 128
-; CHECK-NEXT: srwi r3, r3, 28
+; CHECK-NEXT: mfocrf r3, 64
+; CHECK-NEXT: rlwinm r3, r3, 8, 28, 31
; CHECK-NEXT: andi. r3, r3, 2
; CHECK-NEXT: li r3, 22
; CHECK-NEXT: iseleq r3, r4, r3
More information about the llvm-commits
mailing list