Skip to content
Snippets Groups Projects
Commit e0130a2f authored by Christian Konig's avatar Christian Konig
Browse files

R600/SI: add the missing S_* asm operands


Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarTom Stellard <thomas.stellard@amd.com>
Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
llvm-svn: 175752
parent f5754a01
No related branches found
No related tags found
No related merge requests found
...@@ -85,41 +85,57 @@ include "SIInstrFormats.td" ...@@ -85,41 +85,57 @@ include "SIInstrFormats.td"
// Scalar classes // Scalar classes
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
class SOP1_32 <bits<8> op, string opName, list<dag> pattern> class SOP1_32 <bits<8> op, string opName, list<dag> pattern> : SOP1 <
: SOP1 <op, (outs SReg_32:$dst), (ins SSrc_32:$src0), opName, pattern>; op, (outs SReg_32:$dst), (ins SSrc_32:$src0),
opName#" $dst, $src0", pattern
>;
class SOP1_64 <bits<8> op, string opName, list<dag> pattern> class SOP1_64 <bits<8> op, string opName, list<dag> pattern> : SOP1 <
: SOP1 <op, (outs SReg_64:$dst), (ins SSrc_64:$src0), opName, pattern>; op, (outs SReg_64:$dst), (ins SSrc_64:$src0),
opName#" $dst, $src0", pattern
>;
class SOP2_32 <bits<7> op, string opName, list<dag> pattern> class SOP2_32 <bits<7> op, string opName, list<dag> pattern> : SOP2 <
: SOP2 <op, (outs SReg_32:$dst), (ins SSrc_32:$src0, SSrc_32:$src1), opName, pattern>; op, (outs SReg_32:$dst), (ins SSrc_32:$src0, SSrc_32:$src1),
opName#" $dst, $src0, $src1", pattern
>;
class SOP2_64 <bits<7> op, string opName, list<dag> pattern> class SOP2_64 <bits<7> op, string opName, list<dag> pattern> : SOP2 <
: SOP2 <op, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_64:$src1), opName, pattern>; op, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_64:$src1),
opName#" $dst, $src0, $src1", pattern
>;
class SOPC_32 <bits<7> op, string opName, list<dag> pattern> class SOPC_32 <bits<7> op, string opName, list<dag> pattern> : SOPC <
: SOPC <op, (outs SCCReg:$dst), (ins SSrc_32:$src0, SSrc_32:$src1), opName, pattern>; op, (outs SCCReg:$dst), (ins SSrc_32:$src0, SSrc_32:$src1),
opName#" $dst, $src0, $src1", pattern
>;
class SOPC_64 <bits<7> op, string opName, list<dag> pattern> class SOPC_64 <bits<7> op, string opName, list<dag> pattern> : SOPC <
: SOPC <op, (outs SCCReg:$dst), (ins SSrc_64:$src0, SSrc_64:$src1), opName, pattern>; op, (outs SCCReg:$dst), (ins SSrc_64:$src0, SSrc_64:$src1),
opName#" $dst, $src0, $src1", pattern
>;
class SOPK_32 <bits<5> op, string opName, list<dag> pattern> class SOPK_32 <bits<5> op, string opName, list<dag> pattern> : SOPK <
: SOPK <op, (outs SReg_32:$dst), (ins i16imm:$src0), opName, pattern>; op, (outs SReg_32:$dst), (ins i16imm:$src0),
opName#" $dst, $src0", pattern
>;
class SOPK_64 <bits<5> op, string opName, list<dag> pattern> class SOPK_64 <bits<5> op, string opName, list<dag> pattern> : SOPK <
: SOPK <op, (outs SReg_64:$dst), (ins i16imm:$src0), opName, pattern>; op, (outs SReg_64:$dst), (ins i16imm:$src0),
opName#" $dst, $src0", pattern
>;
multiclass SMRD_Helper <bits<5> op, string asm, RegisterClass dstClass> { multiclass SMRD_Helper <bits<5> op, string asm, RegisterClass dstClass> {
def _IMM : SMRD < def _IMM : SMRD <
op, 1, (outs dstClass:$dst), op, 1, (outs dstClass:$dst),
(ins GPR2Align<SReg_64>:$sbase, i32imm:$offset), (ins GPR2Align<SReg_64>:$sbase, i32imm:$offset),
asm, [] asm#" $dst, $sbase, $offset", []
>; >;
def _SGPR : SMRD < def _SGPR : SMRD <
op, 0, (outs dstClass:$dst), op, 0, (outs dstClass:$dst),
(ins GPR2Align<SReg_64>:$sbase, SReg_32:$soff), (ins GPR2Align<SReg_64>:$sbase, SReg_32:$soff),
asm, [] asm#" $dst, $sbase, $soff", []
>; >;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment