mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-29 10:32:47 +00:00
R600/SI: Add support for v2f32 loads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186615 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fc047278c1
commit
ac85f3f65c
@ -69,6 +69,9 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(TargetMachine &TM) :
|
||||
setOperationAction(ISD::LOAD, MVT::f32, Promote);
|
||||
AddPromotedToType(ISD::LOAD, MVT::f32, MVT::i32);
|
||||
|
||||
setOperationAction(ISD::LOAD, MVT::v2f32, Promote);
|
||||
AddPromotedToType(ISD::LOAD, MVT::v2f32, MVT::v2i32);
|
||||
|
||||
setOperationAction(ISD::LOAD, MVT::v4f32, Promote);
|
||||
AddPromotedToType(ISD::LOAD, MVT::v4f32, MVT::v4i32);
|
||||
|
||||
|
@ -1707,6 +1707,7 @@ multiclass SMRD_Pattern <SMRD Instr_IMM, SMRD Instr_SGPR, ValueType vt> {
|
||||
defm : SMRD_Pattern <S_LOAD_DWORD_IMM, S_LOAD_DWORD_SGPR, f32>;
|
||||
defm : SMRD_Pattern <S_LOAD_DWORD_IMM, S_LOAD_DWORD_SGPR, i32>;
|
||||
defm : SMRD_Pattern <S_LOAD_DWORDX2_IMM, S_LOAD_DWORDX2_SGPR, i64>;
|
||||
defm : SMRD_Pattern <S_LOAD_DWORDX2_IMM, S_LOAD_DWORDX2_SGPR, v2i32>;
|
||||
defm : SMRD_Pattern <S_LOAD_DWORDX4_IMM, S_LOAD_DWORDX4_SGPR, v16i8>;
|
||||
defm : SMRD_Pattern <S_LOAD_DWORDX8_IMM, S_LOAD_DWORDX8_SGPR, v32i8>;
|
||||
|
||||
|
@ -153,7 +153,7 @@ def SReg_32 : RegisterClass<"AMDGPU", [f32, i32], 32,
|
||||
(add SGPR_32, M0Reg)
|
||||
>;
|
||||
|
||||
def SReg_64 : RegisterClass<"AMDGPU", [i64, i1], 64,
|
||||
def SReg_64 : RegisterClass<"AMDGPU", [v2i32, i64, i1], 64,
|
||||
(add SGPR_64, VCCReg, EXECReg)
|
||||
>;
|
||||
|
||||
|
@ -41,6 +41,20 @@ entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
; load a v2f32 value from the global address space
|
||||
; R600-CHECK: @load_v2f32
|
||||
; R600-CHECK: VTX_READ_32
|
||||
; R600-CHECK: VTX_READ_32
|
||||
|
||||
; SI-CHECK: @load_v2f32
|
||||
; SI-CHECK: BUFFER_LOAD_DWORDX2
|
||||
define void @load_v2f32(<2 x float> addrspace(1)* %out, <2 x float> addrspace(1)* %in) {
|
||||
entry:
|
||||
%0 = load <2 x float> addrspace(1)* %in
|
||||
store <2 x float> %0, <2 x float> addrspace(1)* %out
|
||||
ret void
|
||||
}
|
||||
|
||||
; Load an i32 value from the constant address space.
|
||||
; R600-CHECK: @load_const_addrspace_i32
|
||||
; R600-CHECK: VTX_READ_32 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0
|
||||
|
Loading…
Reference in New Issue
Block a user