aboutsummaryrefslogtreecommitdiff
path: root/test/TableGen
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-06-23 19:50:39 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-06-23 19:50:39 +0000
commit81cd7ffe45730d5afd383ee8850e3ff1f48a1920 (patch)
tree47bfbee3a5e9ab27a2713118b796140a97c635fe /test/TableGen
parent9b0d0a42a6772c12bb1c8362aefa6ed50df92290 (diff)
Fix a tblgen bug.
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
Diffstat (limited to 'test/TableGen')
-rw-r--r--test/TableGen/usevalname.td24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/TableGen/usevalname.td b/test/TableGen/usevalname.td
new file mode 100644
index 0000000000..1b31c8f150
--- /dev/null
+++ b/test/TableGen/usevalname.td
@@ -0,0 +1,24 @@
+// 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>;