diff options
| author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-06-18 19:53:41 +0000 |
|---|---|---|
| committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-06-18 19:53:41 +0000 |
| commit | 23f8321cbcb61272ce4e6fbc78e7a8738ba3f861 (patch) | |
| tree | d5778d0d8c129cf8abf1ce1bd2d4a6f17fdf502f /llvm/docs | |
| parent | 4c807fca974bb80547e1add9be6e21b58e16d76a (diff) | |
| download | bcm5719-llvm-23f8321cbcb61272ce4e6fbc78e7a8738ba3f861.tar.gz bcm5719-llvm-23f8321cbcb61272ce4e6fbc78e7a8738ba3f861.zip | |
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.
llvm-svn: 106305
Diffstat (limited to 'llvm/docs')
| -rw-r--r-- | llvm/docs/TableGenFundamentals.html | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/llvm/docs/TableGenFundamentals.html b/llvm/docs/TableGenFundamentals.html index f7a082d7050..81f3cfe0448 100644 --- a/llvm/docs/TableGenFundamentals.html +++ b/llvm/docs/TableGenFundamentals.html @@ -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> <!-- ======================================================================= --> |

