diff options
author | Daniel Sanders <daniel.sanders@imgtec.com> | 2015-09-14 10:12:30 +0000 |
---|---|---|
committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2015-09-14 10:12:30 +0000 |
commit | 9b5d11e278ef32fd453c8050af899837f69e1d99 (patch) | |
tree | 724b09001d2e11913ab95e144e590aec4fc4d838 | |
parent | b9a6adc36decb13eb79f9c4a3da110abbc211fd0 (diff) | |
download | llvm-9b5d11e278ef32fd453c8050af899837f69e1d99.tar.gz |
Merging r246990:
------------------------------------------------------------------------
r246990 | dsanders | 2015-09-08 10:07:03 +0100 (Tue, 08 Sep 2015) | 9 lines
[mips] Reserve address spaces 1-255 for software use.
Summary: And define them to have noop casts with address spaces 0-255.
Reviewers: pekka.jaaskelainen
Subscribers: pekka.jaaskelainen, llvm-commits
Differential Revision: http://reviews.llvm.org/D12678
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_37@247538 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/Mips/MipsISelLowering.h | 8 | ||||
-rw-r--r-- | test/CodeGen/Mips/llvm-ir/addrspacecast.ll | 12 |
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Target/Mips/MipsISelLowering.h b/lib/Target/Mips/MipsISelLowering.h index 6fe8f830d35d..b3d861d34da7 100644 --- a/lib/Target/Mips/MipsISelLowering.h +++ b/lib/Target/Mips/MipsISelLowering.h @@ -269,6 +269,14 @@ namespace llvm { unsigned getRegisterByName(const char* RegName, EVT VT, SelectionDAG &DAG) const override; + /// Returns true if a cast between SrcAS and DestAS is a noop. + bool isNoopAddrSpaceCast(unsigned SrcAS, unsigned DestAS) const override { + // Mips doesn't have any special address spaces so we just reserve + // the first 256 for software use (e.g. OpenCL) and treat casts + // between them as noops. + return SrcAS < 256 && DestAS < 256; + } + protected: SDValue getGlobalReg(SelectionDAG &DAG, EVT Ty) const; diff --git a/test/CodeGen/Mips/llvm-ir/addrspacecast.ll b/test/CodeGen/Mips/llvm-ir/addrspacecast.ll new file mode 100644 index 000000000000..060fa4ce7bb1 --- /dev/null +++ b/test/CodeGen/Mips/llvm-ir/addrspacecast.ll @@ -0,0 +1,12 @@ +; RUN: llc < %s -march=mips -mcpu=mips2 | FileCheck %s -check-prefix=ALL + +; Address spaces 1-255 are software defined. +define i32* @cast(i32 *%arg) { + %1 = addrspacecast i32* %arg to i32 addrspace(1)* + %2 = addrspacecast i32 addrspace(1)* %1 to i32 addrspace(2)* + %3 = addrspacecast i32 addrspace(2)* %2 to i32 addrspace(0)* + ret i32* %3 +} + +; ALL-LABEL: cast: +; ALL: move $2, $4 |