| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // RUN: llvm-tblgen %s | FileCheck %s
- // XFAIL: vg_leak
- class XD { bits<4> Prefix = 11; }
- // CHECK: Prefix = { 1, 1, 0, 0 };
- class XS { bits<4> Prefix = 12; }
- class VEX { bit hasVEX_4VPrefix = 1; }
- def xd : XD;
- class BaseI {
- bits<4> Prefix = 0;
- bit hasVEX_4VPrefix = 0;
- }
- class I<bits<4> op> : BaseI {
- bits<4> opcode = op;
- int val = !if(!eq(Prefix, xd.Prefix), 7, 21);
- int check = !if(hasVEX_4VPrefix, 0, 10);
- }
- multiclass R {
- def rr : I<4>;
- }
- multiclass M {
- def rm : I<2>;
- }
- multiclass Y {
- defm SS : R, M, XD;
- // CHECK: Prefix = { 1, 1, 0, 0 };
- // CHECK: Prefix = { 1, 1, 0, 0 };
- defm SD : R, M, XS;
- }
- // CHECK: int check = 0;
- defm Instr : Y, VEX;
- // Anonymous defm.
- multiclass SomeAnonymous<int x> {
- def rm;
- def mr;
- }
- // These multiclasses shouldn't conflict.
- defm : SomeAnonymous<1>;
- defm : SomeAnonymous<2>;
|