diff options
Diffstat (limited to 'docs/TableGenFundamentals.html')
-rw-r--r-- | docs/TableGenFundamentals.html | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/docs/TableGenFundamentals.html b/docs/TableGenFundamentals.html index 5be11624ce..9d1f14e2d4 100644 --- a/docs/TableGenFundamentals.html +++ b/docs/TableGenFundamentals.html @@ -687,6 +687,50 @@ Here is an example TableGen fragment that shows this idea: </pre> </div> +<p> +A defm can also be used inside a multiclass providing several levels of +multiclass instanciations. +</p> + +<div class="doc_code"> +<pre> +<b>class</b> Instruction<bits<4> opc, string Name> { + bits<4> opcode = opc; + string name = Name; +} + +<b>multiclass</b> basic_r<bits<4> opc> { + <b>def</b> rr : Instruction<opc, "rr">; + <b>def</b> rm : Instruction<opc, "rm">; +} + +<b>multiclass</b> basic_s<bits<4> opc> { + <b>defm</b> SS : basic_r<opc>; + <b>defm</b> SD : basic_r<opc>; + <b>def</b> X : Instruction<opc, "x">; +} + +<b>multiclass</b> basic_p<bits<4> opc> { + <b>defm</b> PS : basic_r<opc>; + <b>defm</b> PD : basic_r<opc>; + <b>def</b> Y : Instruction<opc, "y">; +} + +<b>defm</b> ADD : basic_s<0xf>, basic_p<0xf>; +... + +<i>// Results</i> +<b>def</b> ADDPDrm { ... +<b>def</b> ADDPDrr { ... +<b>def</b> ADDPSrm { ... +<b>def</b> ADDPSrr { ... +<b>def</b> ADDSDrm { ... +<b>def</b> ADDSDrr { ... +<b>def</b> ADDY { ... +<b>def</b> ADDX { ... +</pre> +</div> + </div> <!-- ======================================================================= --> |