Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit b3affde

Browse files
R600/SI: implement SI.load.const intrinsic
Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177273 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 13e876b commit b3affde

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/Target/R600/SIInstructions.td

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,6 +1403,18 @@ def : Pat <
14031403
(V_CNDMASK_B32_e64 (i32 0), (i32 -1), SReg_64:$src0)
14041404
>;
14051405

1406+
// 1. Offset as 8bit DWORD immediate
1407+
def : Pat <
1408+
(int_SI_load_const SReg_128:$sbase, IMM8bitDWORD:$offset),
1409+
(S_BUFFER_LOAD_DWORD_IMM SReg_128:$sbase, IMM8bitDWORD:$offset)
1410+
>;
1411+
1412+
// 2. Offset loaded in an 32bit SGPR
1413+
def : Pat <
1414+
(int_SI_load_const SReg_128:$sbase, imm:$offset),
1415+
(S_BUFFER_LOAD_DWORD_SGPR SReg_128:$sbase, (S_MOV_B32 imm:$offset))
1416+
>;
1417+
14061418
/********** ================== **********/
14071419
/********** VOP3 Patterns **********/
14081420
/********** ================== **********/

lib/Target/R600/SIIntrinsics.td

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ let TargetPrefix = "SI", isTarget = 1 in {
1616

1717
def int_SI_packf16 : Intrinsic <[llvm_i32_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
1818
def int_SI_export : Intrinsic <[], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], []>;
19-
/* XXX: We may need a seperate intrinsic here for loading integer values */
20-
def int_SI_load_const : Intrinsic <[llvm_float_ty], [llvm_i64_ty, llvm_i32_ty], []>;
19+
def int_SI_load_const : Intrinsic <[llvm_float_ty], [llvm_v16i8_ty, llvm_i32_ty], [IntrReadMem]>;
2120
def int_SI_vs_load_input : Intrinsic <[llvm_v4f32_ty], [llvm_v16i8_ty, llvm_i16_ty, llvm_i32_ty], [IntrReadMem]> ;
2221
def int_SI_wqm : Intrinsic <[], [], []>;
2322

0 commit comments

Comments
 (0)