diff options
author | Michel Danzer <michel.daenzer@amd.com> | 2013-07-10 16:36:43 +0000 |
---|---|---|
committer | Michel Danzer <michel.daenzer@amd.com> | 2013-07-10 16:36:43 +0000 |
commit | 7740daa8ba053294b7448556c049cf6778711d66 (patch) | |
tree | ccbd3219bd492392ef21fc62e01406d55ae66c5a /lib/Target/R600/SIInstrFormats.td | |
parent | 0a9aaacd7298e4108eeecef7bad7933ae7cf36c4 (diff) | |
download | external_llvm-7740daa8ba053294b7448556c049cf6778711d66.zip external_llvm-7740daa8ba053294b7448556c049cf6778711d66.tar.gz external_llvm-7740daa8ba053294b7448556c049cf6778711d66.tar.bz2 |
R600/SI: Initial support for LDS/GDS instructions
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186009 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600/SIInstrFormats.td')
-rw-r--r-- | lib/Target/R600/SIInstrFormats.td | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/Target/R600/SIInstrFormats.td b/lib/Target/R600/SIInstrFormats.td index 51f323d..434aa7e 100644 --- a/lib/Target/R600/SIInstrFormats.td +++ b/lib/Target/R600/SIInstrFormats.td @@ -281,6 +281,30 @@ class VINTRP <bits <2> op, dag outs, dag ins, string asm, list<dag> pattern> : let Uses = [EXEC] in { +class DS <bits<8> op, dag outs, dag ins, string asm, list<dag> pattern> : + Enc64 <outs, ins, asm, pattern> { + + bits<8> vdst; + bits<1> gds; + bits<8> addr; + bits<8> data0; + bits<8> data1; + bits<8> offset0; + bits<8> offset1; + + let Inst{7-0} = offset0; + let Inst{15-8} = offset1; + let Inst{17} = gds; + let Inst{25-18} = op; + let Inst{31-26} = 0x36; //encoding + let Inst{39-32} = addr; + let Inst{47-40} = data0; + let Inst{55-48} = data1; + let Inst{63-56} = vdst; + + let LGKM_CNT = 1; +} + class MUBUF <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> : Enc64<outs, ins, asm, pattern> { |