summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600/AMDGPUISelLowering.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2015-05-24 00:51:27 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2015-05-24 00:51:27 +0000
commit65ad1602b038549dfff4e8e2fe30dac15e45189d (patch)
treec03cf718e5e9fdc2cfc6eb633fbde3d35f134e89 /llvm/lib/Target/R600/AMDGPUISelLowering.cpp
parentdc4c87f051871ddd4abd252a9755ffd26c9ce565 (diff)
downloadbcm5719-llvm-65ad1602b038549dfff4e8e2fe30dac15e45189d.tar.gz
bcm5719-llvm-65ad1602b038549dfff4e8e2fe30dac15e45189d.zip
Add target hook to allow merging stores of nonzero constants
On GPU targets, materializing constants is cheap and stores are expensive, so only doing this for zero vectors was silly. Most of the new testcases aren't optimally merged, and are for later improvements. llvm-svn: 238108
Diffstat (limited to 'llvm/lib/Target/R600/AMDGPUISelLowering.cpp')
-rw-r--r--llvm/lib/Target/R600/AMDGPUISelLowering.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUISelLowering.cpp b/llvm/lib/Target/R600/AMDGPUISelLowering.cpp
index b304488142a..880240c51a8 100644
--- a/llvm/lib/Target/R600/AMDGPUISelLowering.cpp
+++ b/llvm/lib/Target/R600/AMDGPUISelLowering.cpp
@@ -509,6 +509,12 @@ bool AMDGPUTargetLowering::isFNegFree(EVT VT) const {
return VT == MVT::f32 || VT == MVT::f64;
}
+bool AMDGPUTargetLowering:: storeOfVectorConstantIsCheap(EVT MemVT,
+ unsigned NumElem,
+ unsigned AS) const {
+ return true;
+}
+
bool AMDGPUTargetLowering::isTruncateFree(EVT Source, EVT Dest) const {
// Truncate is just accessing a subregister.
return Dest.bitsLT(Source) && (Dest.getSizeInBits() % 32 == 0);
OpenPOWER on IntegriCloud