Mercurial > hg > CbC > CbC_llvm
diff llvm/test/TableGen/defmclass.td @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | c4bab56944e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/llvm/test/TableGen/defmclass.td Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,50 @@ +// 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>; \ No newline at end of file