mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Teach tablegen how to inherit from classes in 'defm' definitions.
The rule is simple: only inherit from a class list if they come in the end, after the last multiclass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106305 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -732,6 +732,47 @@ multiclass instanciations.
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
defm declarations can inherit from classes too, the
|
||||
rule to follow is that the class list must start after the
|
||||
last multiclass, and there must be at least one multiclass
|
||||
before them.
|
||||
</p>
|
||||
|
||||
<div class="doc_code">
|
||||
<pre>
|
||||
<b>class</b> XD { bits<4> Prefix = 11; }
|
||||
<b>class</b> XS { bits<4> Prefix = 12; }
|
||||
|
||||
<b>class</b> I<bits<4> op> {
|
||||
bits<4> opcode = op;
|
||||
}
|
||||
|
||||
<b>multiclass</b> R {
|
||||
<b>def</b> rr : I<4>;
|
||||
<b>def</b> rm : I<2>;
|
||||
}
|
||||
|
||||
<b>multiclass</b> Y {
|
||||
<b>defm</b> SS : R, XD;
|
||||
<b>defm</b> SD : R, XS;
|
||||
}
|
||||
|
||||
<b>defm</b> Instr : Y;
|
||||
|
||||
<i>// Results</i>
|
||||
<b>def</b> InstrSDrm {
|
||||
bits<4> opcode = { 0, 0, 1, 0 };
|
||||
bits<4> Prefix = { 1, 1, 0, 0 };
|
||||
}
|
||||
...
|
||||
<b>def</b> InstrSSrr {
|
||||
bits<4> opcode = { 0, 1, 0, 0 };
|
||||
bits<4> Prefix = { 1, 0, 1, 1 };
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
|
Reference in New Issue
Block a user