Skip to content

Commit 0975640

Browse files
committed
Use intersection of flags.
1 parent c1db6a6 commit 0975640

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

llvm/lib/Target/SystemZ/SystemZPostRewrite.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,10 @@ void SystemZPostRewrite::selectSELRMux(MachineBasicBlock &MBB,
101101
unsigned LowOpcode,
102102
unsigned HighOpcode) {
103103
Register DestReg = MBBI->getOperand(0).getReg();
104-
Register Src1Reg = MBBI->getOperand(1).getReg();
105-
Register Src2Reg = MBBI->getOperand(2).getReg();
104+
MachineOperand &Src1MO = MBBI->getOperand(1);
105+
MachineOperand &Src2MO = MBBI->getOperand(2);
106+
Register Src1Reg = Src1MO.getReg();
107+
Register Src2Reg = Src2MO.getReg();
106108
bool DestIsHigh = SystemZ::isHighReg(DestReg);
107109
bool Src1IsHigh = SystemZ::isHighReg(Src1Reg);
108110
bool Src2IsHigh = SystemZ::isHighReg(Src2Reg);
@@ -114,7 +116,7 @@ void SystemZPostRewrite::selectSELRMux(MachineBasicBlock &MBB,
114116
if (Src1Reg == Src2Reg) {
115117
BuildMI(*MBBI->getParent(), MBBI, MBBI->getDebugLoc(),
116118
TII->get(SystemZ::COPY), DestReg)
117-
.addReg(MBBI->getOperand(1).getReg(), RegState::Renamable);
119+
.addReg(Src1Reg, getRegState(Src1MO) & getRegState(Src2MO));
118120
MBBI->eraseFromParent();
119121
return;
120122
}
@@ -126,15 +128,15 @@ void SystemZPostRewrite::selectSELRMux(MachineBasicBlock &MBB,
126128
if (DestIsHigh != Src1IsHigh) {
127129
BuildMI(*MBBI->getParent(), MBBI, MBBI->getDebugLoc(),
128130
TII->get(SystemZ::COPY), DestReg)
129-
.addReg(MBBI->getOperand(1).getReg(), getRegState(MBBI->getOperand(1)));
130-
MBBI->getOperand(1).setReg(DestReg);
131+
.addReg(Src1Reg, getRegState(Src1MO));
132+
Src1MO.setReg(DestReg);
131133
Src1Reg = DestReg;
132134
Src1IsHigh = DestIsHigh;
133135
} else if (DestIsHigh != Src2IsHigh) {
134136
BuildMI(*MBBI->getParent(), MBBI, MBBI->getDebugLoc(),
135137
TII->get(SystemZ::COPY), DestReg)
136-
.addReg(MBBI->getOperand(2).getReg(), getRegState(MBBI->getOperand(2)));
137-
MBBI->getOperand(2).setReg(DestReg);
138+
.addReg(Src2Reg, getRegState(Src2MO));
139+
Src2MO.setReg(DestReg);
138140
Src2Reg = DestReg;
139141
Src2IsHigh = DestIsHigh;
140142
}

llvm/test/CodeGen/SystemZ/cond-move-11.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# RUN: llc -o - %s -mtriple=s390x-linux-gnu -mcpu=z15 -start-before=systemz-post-rewrite \
2-
# RUN: -stop-after=machine-cp 2>&1 | FileCheck %s
2+
# RUN: -stop-after=machine-cp -verify-machineinstrs 2>&1 | FileCheck %s
33

44
# The chained SELRMux:es both has two operands with the same register but
55
# where one of the operands have been marked as undef (resulting from

0 commit comments

Comments
 (0)