[llvm] r246990 - [mips] Reserve address spaces 1-255 for software use.
Daniel Sanders via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 8 02:07:03 PDT 2015
Author: dsanders
Date: Tue Sep 8 04:07:03 2015
New Revision: 246990
URL: http://llvm.org/viewvc/llvm-project?rev=246990&view=rev
Log:
[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
Added:
llvm/trunk/test/CodeGen/Mips/llvm-ir/addrspacecast.ll
Modified:
llvm/trunk/lib/Target/Mips/MipsISelLowering.h
Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.h?rev=246990&r1=246989&r2=246990&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsISelLowering.h (original)
+++ llvm/trunk/lib/Target/Mips/MipsISelLowering.h Tue Sep 8 04:07:03 2015
@@ -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;
Added: llvm/trunk/test/CodeGen/Mips/llvm-ir/addrspacecast.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/addrspacecast.ll?rev=246990&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/addrspacecast.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/addrspacecast.ll Tue Sep 8 04:07:03 2015
@@ -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
More information about the llvm-commits
mailing list