mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-05 10:17:37 +00:00
81cd7ffe45
Given the pattern below as an example: list<dag> Pattern = [(set RC:$dst, (v4f32 (shufp:src3 RC:$src1, (mem_frag addr:$src2))))]; The right reference resolving should lead to: list<dag> Pattern = [(set VR128:$dst, (v4f32 (shufp:src3 VR128:$src1, (mem_frag addr:$src2))))]; But was yielding: list<dag> Pattern = [(set VR128:$dst, (v4f32 (shufp VR128:$src1, (mem_frag addr:$src2))))]; Fix this by passing the right name when creating a new DagInit node. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106670 91177308-0d34-0410-b5e6-96231b3b80d8
25 lines
396 B
TableGen
25 lines
396 B
TableGen
// RUN: tblgen %s | FileCheck %s
|
|
// XFAIL: vg_leak
|
|
|
|
class Instr<list<dag> pat> {
|
|
list<dag> Pattern = pat;
|
|
}
|
|
|
|
class Reg {
|
|
int a = 3;
|
|
}
|
|
|
|
def VR128 : Reg;
|
|
def mem_frag;
|
|
def set;
|
|
def addr;
|
|
def shufp : Reg;
|
|
|
|
multiclass shuffle<Reg RC> {
|
|
def rri : Instr<[(set RC:$dst, (shufp:$src3
|
|
RC:$src1, RC:$src2))]>;
|
|
}
|
|
|
|
// CHECK: shufp:src3
|
|
defm ADD : shuffle<VR128>;
|