Skip to content

Commit 31b12b0

Browse files
!fixup move from custom legalization to LegalizerHelper::lower
1 parent b9000ab commit 31b12b0

File tree

4 files changed

+21
-26
lines changed

4 files changed

+21
-26
lines changed

llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@ class LegalizerHelper {
430430
LegalizeResult lowerVectorReduction(MachineInstr &MI);
431431
LegalizeResult lowerMemcpyInline(MachineInstr &MI);
432432
LegalizeResult lowerMemCpyFamily(MachineInstr &MI, unsigned MaxLen = 0);
433+
LegalizeResult lowerPtrMask(MachineInstr &MI);
433434
};
434435

435436
/// Helper function that creates a libcall to the given \p Name using the given

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3780,6 +3780,8 @@ LegalizerHelper::lower(MachineInstr &MI, unsigned TypeIdx, LLT LowerHintTy) {
37803780
return lowerTRUNC(MI);
37813781
GISEL_VECREDUCE_CASES_NONSEQ
37823782
return lowerVectorReduction(MI);
3783+
case G_PTRMASK:
3784+
return lowerPtrMask(MI);
37833785
}
37843786
}
37853787

@@ -8405,3 +8407,20 @@ LegalizerHelper::lowerMemCpyFamily(MachineInstr &MI, unsigned MaxLen) {
84058407
return lowerMemset(MI, Dst, Src, KnownLen, DstAlign, IsVolatile);
84068408
return UnableToLegalize;
84078409
}
8410+
8411+
LegalizerHelper::LegalizeResult
8412+
LegalizerHelper::lowerPtrMask(MachineInstr &MI) {
8413+
assert(MI.getOpcode() == TargetOpcode::G_PTRMASK);
8414+
8415+
MachineRegisterInfo &MRI = *MIRBuilder.getMRI();
8416+
Register Tmp1 =
8417+
MRI.createGenericVirtualRegister(MRI.getType(MI.getOperand(2).getReg()));
8418+
Register Tmp2 =
8419+
MRI.createGenericVirtualRegister(MRI.getType(MI.getOperand(2).getReg()));
8420+
MIRBuilder.buildPtrToInt(Tmp1, MI.getOperand(1).getReg());
8421+
MIRBuilder.buildAnd(Tmp2, Tmp1, MI.getOperand(2).getReg());
8422+
MIRBuilder.buildIntToPtr(MI.getOperand(0).getReg(), Tmp2);
8423+
8424+
MI.eraseFromParent();
8425+
return Legalized;
8426+
}

llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST) {
147147

148148
getActionDefinitionsBuilder(G_PTR_ADD).legalFor({{p0, sXLen}});
149149

150-
getActionDefinitionsBuilder(G_PTRMASK).customFor({{p0, sXLen}});
150+
getActionDefinitionsBuilder(G_PTRMASK).lowerFor({{p0, sXLen}});
151151

152152
getActionDefinitionsBuilder(G_PTRTOINT)
153153
.legalFor({{sXLen, p0}})
@@ -290,25 +290,6 @@ bool RISCVLegalizerInfo::legalizeShlAshrLshr(
290290
return true;
291291
}
292292

293-
bool RISCVLegalizerInfo::legalizePtrMask(MachineInstr &MI,
294-
MachineIRBuilder &MIRBuilder,
295-
GISelChangeObserver &Observer) const {
296-
assert(MI.getOpcode() == TargetOpcode::G_PTRMASK);
297-
298-
MachineRegisterInfo &MRI = *MIRBuilder.getMRI();
299-
Register Tmp1 =
300-
MRI.createGenericVirtualRegister(MRI.getType(MI.getOperand(2).getReg()));
301-
Register Tmp2 =
302-
MRI.createGenericVirtualRegister(MRI.getType(MI.getOperand(2).getReg()));
303-
MIRBuilder.buildPtrToInt(Tmp1, MI.getOperand(1).getReg());
304-
MIRBuilder.buildAnd(Tmp2, Tmp1, MI.getOperand(2).getReg());
305-
MIRBuilder.buildIntToPtr(MI.getOperand(0).getReg(), Tmp2);
306-
307-
Observer.erasingInstr(MI);
308-
MI.eraseFromParent();
309-
return true;
310-
}
311-
312293
bool RISCVLegalizerInfo::legalizeCustom(LegalizerHelper &Helper,
313294
MachineInstr &MI) const {
314295
MachineIRBuilder &MIRBuilder = Helper.MIRBuilder;
@@ -330,9 +311,6 @@ bool RISCVLegalizerInfo::legalizeCustom(LegalizerHelper &Helper,
330311
return Helper.lower(MI, 0, /* Unused hint type */ LLT()) ==
331312
LegalizerHelper::Legalized;
332313
}
333-
case TargetOpcode::G_PTRMASK:
334-
return legalizePtrMask(MI, MIRBuilder, Observer);
335314
}
336-
337315
llvm_unreachable("expected switch to return");
338316
}

llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ class RISCVLegalizerInfo : public LegalizerInfo {
3131
private:
3232
bool legalizeShlAshrLshr(MachineInstr &MI, MachineIRBuilder &MIRBuilder,
3333
GISelChangeObserver &Observer) const;
34-
35-
bool legalizePtrMask(MachineInstr &MI, MachineIRBuilder &MIRBuilder,
36-
GISelChangeObserver &Observer) const;
3734
};
3835
} // end namespace llvm
3936
#endif

0 commit comments

Comments
 (0)