summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2016-12-17 04:41:53 +0000
committerTom Stellard <thomas.stellard@amd.com>2016-12-17 04:41:53 +0000
commit7761abb64a03d7a4dda6d8cc0e25dfe0ab67ab14 (patch)
tree976d3eb23856a9218ae2bc71bae0973b8d5dd235 /llvm/lib/CodeGen
parent63d2e2d8a8c83738885b63bfeedcad59a940460a (diff)
downloadbcm5719-llvm-7761abb64a03d7a4dda6d8cc0e25dfe0ab67ab14.tar.gz
bcm5719-llvm-7761abb64a03d7a4dda6d8cc0e25dfe0ab67ab14.zip
Add custom type for PseudoSourceValue
Summary: PseudoSourceValue can be used to attach a target specific value for "well behaved" side-effects lowered from target specific intrinsics. This is useful whenever there is not an LLVM IR Value around when representing such "well behaved" side-effected operations in backends by attaching a MachineMemOperand with a custom PseudoSourceValue as this makes the scheduler not treating them as "GlobalMemoryObjects" which triggers a logic that makes the operation act like a barrier in the Schedule DAG. This patch adds another Kind to the PseudoSourceValue object which is "TargetCustom". It indicates a type of PseudoSourceValue that has a target specific meaning (aka. LLVM shouldn't assume any specific usage for such a PSV). It supports the possibility of having many different kinds of "TargetCustom" PseudoSourceValues. We had a discussion about if this was valuable or not (in particular because there was a believe that PSV were going away sooner or later) but seems like they are not going anywhere and I think they are useful backend side. It is not clear the interaction of this with MIRParser (do we need a target hook to parse these?) and I would like a comment from Alex about that :) Reviewers: arphaman, hfinkel, arsenm Subscribers: Eugene.Zelenko, llvm-commits Patch By: Marcello Maggioni Differential Revision: https://reviews.llvm.org/D13575 llvm-svn: 290037
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/MIRPrinter.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp
index ec9414b63c1..eb13d2d3ec0 100644
--- a/llvm/lib/CodeGen/MIRPrinter.cpp
+++ b/llvm/lib/CodeGen/MIRPrinter.cpp
@@ -960,6 +960,9 @@ void MIPrinter::print(const MachineMemOperand &Op) {
printLLVMNameWithoutPrefix(
OS, cast<ExternalSymbolPseudoSourceValue>(PVal)->getSymbol());
break;
+ case PseudoSourceValue::TargetCustom:
+ llvm_unreachable("TargetCustom pseudo source values are not supported");
+ break;
}
}
printOffset(Op.getOffset());
OpenPOWER on IntegriCloud