brintos

brintos / llvm-project-archived public Read only

0
0
Text · 879 B · 2a62184 Raw
50 lines · plain
1// RUN: llvm-tblgen --no-warn-on-unused-template-args %s | FileCheck %s2// XFAIL: vg_leak3 4class XD { bits<4> Prefix = 11; }5// CHECK: Prefix = { 1, 1, 0, 0 };6class XS { bits<4> Prefix = 12; }7class VEX { bit hasVEX_4VPrefix = 1; }8 9def xd : XD;10 11class BaseI {12  bits<4> Prefix = 0;13  bit hasVEX_4VPrefix = 0;14}15 16class I<bits<4> op> : BaseI {17  bits<4> opcode = op;18  int val = !if(!eq(Prefix, xd.Prefix), 7, 21);19  int check = !if(hasVEX_4VPrefix, 0, 10);20}21 22multiclass R {23  def rr : I<4>;24}25 26multiclass M {27  def rm : I<2>;28}29 30multiclass Y {31  defm SS : R, M, XD;32// CHECK: Prefix = { 1, 1, 0, 0 };33// CHECK: Prefix = { 1, 1, 0, 0 };34  defm SD : R, M, XS;35}36 37// CHECK: int check = 0;38defm Instr : Y, VEX;39 40 41// Anonymous defm.42 43multiclass SomeAnonymous<int x> {44  def rm;45  def mr;46}47 48// These multiclasses shouldn't conflict.49defm : SomeAnonymous<1>;50defm : SomeAnonymous<2>;