diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-06-05 02:11:52 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-06-05 02:11:52 +0000 |
commit | 270562b3d4c61ae1381cb1b0026bb703b46ff88f (patch) | |
tree | dc95c8cba3a2dd08aa0facb0293c7689bca5e6bb /docs/TableGenFundamentals.html | |
parent | 8613b18a5aa80b13bb8c7f470528146f009bed74 (diff) |
Teach tablegen to support 'defm' inside multiclasses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105519 91177308-0d34-0410-b5e6-96231b3b80d8
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> <!-- ======================================================================= --> |