summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2014-06-17 16:53:14 +0000
committerTom Stellard <thomas.stellard@amd.com>2014-06-17 16:53:14 +0000
commit880a80ad07b6ea7ead3a842fc03c74c2247c9486 (patch)
tree489496181586013e2a61c8773964938c4236822c /llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp
parent85ad429f1fbbcaad0cb0d2e579912868af50d28b (diff)
downloadbcm5719-llvm-880a80ad07b6ea7ead3a842fc03c74c2247c9486.tar.gz
bcm5719-llvm-880a80ad07b6ea7ead3a842fc03c74c2247c9486.zip
R600: Use LDS and vectors for private memory
llvm-svn: 211110
Diffstat (limited to 'llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp')
-rw-r--r--llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp
index 8385baa1011..b4e86ce3a1a 100644
--- a/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp
+++ b/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp
@@ -258,6 +258,7 @@ SDNode *AMDGPUDAGToDAGISel::Select(SDNode *N) {
return CurDAG->SelectNodeTo(N, AMDGPU::REG_SEQUENCE, MVT::i64, Args);
}
case ISD::SCALAR_TO_VECTOR:
+ case AMDGPUISD::BUILD_VERTICAL_VECTOR:
case ISD::BUILD_VECTOR: {
unsigned RegClassID;
const AMDGPURegisterInfo *TRI =
@@ -308,7 +309,12 @@ SDNode *AMDGPUDAGToDAGISel::Select(SDNode *N) {
// can't be bundled by our scheduler.
switch(NumVectorElts) {
case 2: RegClassID = AMDGPU::R600_Reg64RegClassID; break;
- case 4: RegClassID = AMDGPU::R600_Reg128RegClassID; break;
+ case 4:
+ if (Opc == AMDGPUISD::BUILD_VERTICAL_VECTOR)
+ RegClassID = AMDGPU::R600_Reg128VerticalRegClassID;
+ else
+ RegClassID = AMDGPU::R600_Reg128RegClassID;
+ break;
default: llvm_unreachable("Do not know how to lower this BUILD_VECTOR");
}
}
OpenPOWER on IntegriCloud