[PATCH] D31359: [GlobalISel]: Allow backends to custom legalize Intrinsics
Aditya Nandakumar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 30 14:09:39 PDT 2017
aditya_nandakumar updated this revision to Diff 93539.
aditya_nandakumar added a comment.
Updated this to just handle the lowering of the Intrinsics.
Handling the case of reporting failure on deleted instructions is being discussed here (and is orthogonal to this).
https://reviews.llvm.org/D31503
Repository:
rL LLVM
https://reviews.llvm.org/D31359
Files:
include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
lib/CodeGen/GlobalISel/LegalizerHelper.cpp
lib/CodeGen/GlobalISel/LegalizerInfo.cpp
Index: lib/CodeGen/GlobalISel/LegalizerInfo.cpp
===================================================================
--- lib/CodeGen/GlobalISel/LegalizerInfo.cpp
+++ lib/CodeGen/GlobalISel/LegalizerInfo.cpp
@@ -194,3 +194,8 @@
MachineIRBuilder &MIRBuilder) const {
return false;
}
+bool LegalizerInfo::legalizeIntrinsic(MachineInstr &MI,
+ MachineRegisterInfo &MRI,
+ MachineIRBuilder &MIRBuilder) const {
+ return true;
+}
Index: lib/CodeGen/GlobalISel/LegalizerHelper.cpp
===================================================================
--- lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -37,6 +37,10 @@
LegalizerHelper::LegalizeResult
LegalizerHelper::legalizeInstrStep(MachineInstr &MI) {
+ if (TargetOpcode::G_INTRINSIC == MI.getOpcode() ||
+ TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS == MI.getOpcode())
+ return LI.legalizeIntrinsic(MI, MRI, MIRBuilder) ? Legalized
+ : UnableToLegalize;
auto Action = LI.getAction(MI, MRI);
switch (std::get<0>(Action)) {
case LegalizerInfo::Legal:
Index: include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
===================================================================
--- include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
+++ include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
@@ -192,6 +192,9 @@
MachineRegisterInfo &MRI,
MachineIRBuilder &MIRBuilder) const;
+ virtual bool legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI,
+ MachineIRBuilder &MIRBuilder) const;
+
private:
static const int FirstOp = TargetOpcode::PRE_ISEL_GENERIC_OPCODE_START;
static const int LastOp = TargetOpcode::PRE_ISEL_GENERIC_OPCODE_END;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D31359.93539.patch
Type: text/x-patch
Size: 1901 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170330/2f7103ee/attachment.bin>
More information about the llvm-commits
mailing list