summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2014-03-31 14:01:56 +0000
committerTom Stellard <thomas.stellard@amd.com>2014-03-31 14:01:56 +0000
commit30f59417cf4096000a9a763722d8282dab6aefd7 (patch)
treefdb806e593ab6f3ddb682dab138f7ac123be06e8 /llvm/lib/Target/R600
parent7ea3d6d420b732432c899e118e1a2cf52c59ce53 (diff)
downloadbcm5719-llvm-30f59417cf4096000a9a763722d8282dab6aefd7.tar.gz
bcm5719-llvm-30f59417cf4096000a9a763722d8282dab6aefd7.zip
R600/SI: Implement SIInstrInfo::isTriviallyRematerializable()
llvm-svn: 205188
Diffstat (limited to 'llvm/lib/Target/R600')
-rw-r--r--llvm/lib/Target/R600/SIInstrInfo.cpp12
-rw-r--r--llvm/lib/Target/R600/SIInstrInfo.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/R600/SIInstrInfo.cpp b/llvm/lib/Target/R600/SIInstrInfo.cpp
index 336f6aa5667..c39b1dbb141 100644
--- a/llvm/lib/Target/R600/SIInstrInfo.cpp
+++ b/llvm/lib/Target/R600/SIInstrInfo.cpp
@@ -308,6 +308,18 @@ SIInstrInfo::isSafeToMoveRegClassDefs(const TargetRegisterClass *RC) const {
return RC != &AMDGPU::EXECRegRegClass;
}
+bool
+SIInstrInfo::isTriviallyReMaterializable(const MachineInstr *MI,
+ AliasAnalysis *AA) const {
+ switch(MI->getOpcode()) {
+ default: return AMDGPUInstrInfo::isTriviallyReMaterializable(MI, AA);
+ case AMDGPU::S_MOV_B32:
+ case AMDGPU::S_MOV_B64:
+ case AMDGPU::V_MOV_B32_e32:
+ return MI->getOperand(1).isImm();
+ }
+}
+
namespace llvm {
namespace AMDGPU {
// Helper function generated by tablegen. We are wrapping this with
diff --git a/llvm/lib/Target/R600/SIInstrInfo.h b/llvm/lib/Target/R600/SIInstrInfo.h
index 7cfb655b36b..d143b8a5106 100644
--- a/llvm/lib/Target/R600/SIInstrInfo.h
+++ b/llvm/lib/Target/R600/SIInstrInfo.h
@@ -77,6 +77,9 @@ public:
virtual MachineInstr *commuteInstruction(MachineInstr *MI,
bool NewMI=false) const;
+ bool isTriviallyReMaterializable(const MachineInstr *MI,
+ AliasAnalysis *AA = 0) const;
+
virtual unsigned getIEQOpcode() const {
llvm_unreachable("Unimplemented");
}
OpenPOWER on IntegriCloud