mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-30 04:35:00 +00:00
R600: Expand TruncStore i64 -> {i16,i8}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207844 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9b22626068
commit
1d6859256c
@ -145,6 +145,8 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(TargetMachine &TM) :
|
|||||||
// handle 64-bit stores.
|
// handle 64-bit stores.
|
||||||
setTruncStoreAction(MVT::v4i32, MVT::v4i16, Expand);
|
setTruncStoreAction(MVT::v4i32, MVT::v4i16, Expand);
|
||||||
|
|
||||||
|
setTruncStoreAction(MVT::i64, MVT::i16, Expand);
|
||||||
|
setTruncStoreAction(MVT::i64, MVT::i8, Expand);
|
||||||
setTruncStoreAction(MVT::i64, MVT::i1, Expand);
|
setTruncStoreAction(MVT::i64, MVT::i1, Expand);
|
||||||
setTruncStoreAction(MVT::v2i64, MVT::v2i1, Expand);
|
setTruncStoreAction(MVT::v2i64, MVT::v2i1, Expand);
|
||||||
setTruncStoreAction(MVT::v4i64, MVT::v4i1, Expand);
|
setTruncStoreAction(MVT::v4i64, MVT::v4i1, Expand);
|
||||||
|
@ -177,6 +177,26 @@ entry:
|
|||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; FUNC-LABEL: @store_i64_i8
|
||||||
|
; EG-CHECK: MEM_RAT MSKOR
|
||||||
|
; SI-CHECK: BUFFER_STORE_BYTE
|
||||||
|
define void @store_i64_i8(i8 addrspace(1)* %out, i64 %in) {
|
||||||
|
entry:
|
||||||
|
%0 = trunc i64 %in to i8
|
||||||
|
store i8 %0, i8 addrspace(1)* %out
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
; FUNC-LABEL: @store_i64_i16
|
||||||
|
; EG-CHECK: MEM_RAT MSKOR
|
||||||
|
; SI-CHECK: BUFFER_STORE_SHORT
|
||||||
|
define void @store_i64_i16(i16 addrspace(1)* %out, i64 %in) {
|
||||||
|
entry:
|
||||||
|
%0 = trunc i64 %in to i16
|
||||||
|
store i16 %0, i16 addrspace(1)* %out
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
;===------------------------------------------------------------------------===;
|
;===------------------------------------------------------------------------===;
|
||||||
; Local Address Space
|
; Local Address Space
|
||||||
;===------------------------------------------------------------------------===;
|
;===------------------------------------------------------------------------===;
|
||||||
@ -272,6 +292,26 @@ entry:
|
|||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; FUNC-LABEL: @store_local_i64_i8
|
||||||
|
; EG-CHECK: LDS_BYTE_WRITE
|
||||||
|
; SI-CHECK: DS_WRITE_B8
|
||||||
|
define void @store_local_i64_i8(i8 addrspace(3)* %out, i64 %in) {
|
||||||
|
entry:
|
||||||
|
%0 = trunc i64 %in to i8
|
||||||
|
store i8 %0, i8 addrspace(3)* %out
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
; FUNC-LABEL: @store_local_i64_i16
|
||||||
|
; EG-CHECK: LDS_SHORT_WRITE
|
||||||
|
; SI-CHECK: DS_WRITE_B16
|
||||||
|
define void @store_local_i64_i16(i16 addrspace(3)* %out, i64 %in) {
|
||||||
|
entry:
|
||||||
|
%0 = trunc i64 %in to i16
|
||||||
|
store i16 %0, i16 addrspace(3)* %out
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
; The stores in this function are combined by the optimizer to create a
|
; The stores in this function are combined by the optimizer to create a
|
||||||
; 64-bit store with 32-bit alignment. This is legal for SI and the legalizer
|
; 64-bit store with 32-bit alignment. This is legal for SI and the legalizer
|
||||||
; should not try to split the 64-bit store back into 2 32-bit stores.
|
; should not try to split the 64-bit store back into 2 32-bit stores.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user