Author: dsanders Date: Mon Sep 14 05:12:30 2015 New Revision: 247538 URL: http://llvm.org/viewvc/llvm-project?rev=247538&view=rev Log: 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 ------------------------------------------------------------------------ Added: llvm/branches/release_37/test/CodeGen/Mips/llvm-ir/addrspacecast.ll Modified: llvm/branches/release_37/lib/Target/Mips/MipsISelLowering.h Modified: llvm/branches/release_37/lib/Target/Mips/MipsISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_37/lib/Target/Mips/MipsISelLowering.h?rev=247538&r1=247537&r2=247538&view=diff ============================================================================== --- llvm/branches/release_37/lib/Target/Mips/MipsISelLowering.h (original) +++ llvm/branches/release_37/lib/Target/Mips/MipsISelLowering.h Mon Sep 14 05:12:30 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/branches/release_37/test/CodeGen/Mips/llvm-ir/addrspacecast.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_37/test/CodeGen/Mips/llvm-ir/addrspacecast.ll?rev=247538&view=auto ============================================================================== --- llvm/branches/release_37/test/CodeGen/Mips/llvm-ir/addrspacecast.ll (added) +++ llvm/branches/release_37/test/CodeGen/Mips/llvm-ir/addrspacecast.ll Mon Sep 14 05:12:30 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 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits