mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-11 15:26:40 +00:00
[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/trunk@246990 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0697651ac5
commit
41517aa3f4
@ -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;
|
||||
|
||||
|
12
test/CodeGen/Mips/llvm-ir/addrspacecast.ll
Normal file
12
test/CodeGen/Mips/llvm-ir/addrspacecast.ll
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user