aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/R600/SIInstrFormats.td
diff options
context:
space:
mode:
authorMichel Danzer <michel.daenzer@amd.com>2013-07-10 16:36:43 +0000
committerMichel Danzer <michel.daenzer@amd.com>2013-07-10 16:36:43 +0000
commit7740daa8ba053294b7448556c049cf6778711d66 (patch)
treeccbd3219bd492392ef21fc62e01406d55ae66c5a /lib/Target/R600/SIInstrFormats.td
parent0a9aaacd7298e4108eeecef7bad7933ae7cf36c4 (diff)
downloadexternal_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.td24
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> {