Jakob Stoklund Olesen | a2da788 | 2012-03-07 16:39:35 +0000 | [diff] [blame] | 1 | // RUN: llvm-tblgen %s | FileCheck %s |
| 2 | // XFAIL: vg_leak |
| 3 | |
| 4 | class Type<string name, int length, int width> { |
| 5 | string Name = name; |
| 6 | int Length = length; |
| 7 | int Width = width; |
| 8 | } |
| 9 | |
| 10 | multiclass OT1<string ss, int l, int w> { |
| 11 | def _#NAME# : Type<ss, l, w>; |
| 12 | } |
| 13 | multiclass OT2<string ss, int w> { |
| 14 | defm v1#NAME# : OT1<!strconcat( "v1", ss), 1, w>; |
| 15 | defm v2#NAME# : OT1<!strconcat( "v2", ss), 2, w>; |
| 16 | defm v3#NAME# : OT1<!strconcat( "v3", ss), 3, w>; |
| 17 | defm v4#NAME# : OT1<!strconcat( "v4", ss), 4, w>; |
| 18 | defm v8#NAME# : OT1<!strconcat( "v8", ss), 8, w>; |
| 19 | defm v16#NAME# : OT1<!strconcat("v16", ss), 16, w>; |
| 20 | } |
| 21 | |
| 22 | defm i8 : OT2<"i8", 8>; |
| 23 | |
| 24 | // CHECK: _v16i8 |
| 25 | // CHECK: Length = 16 |
| 26 | // CHECK: Width = 8 |
| 27 | |
| 28 | // CHECK: _v1i8 |
| 29 | // CHECK: Length = 1 |
| 30 | // CHECK: Width = 8 |
| 31 | |
| 32 | // CHECK: _v2i8 |
| 33 | // CHECK: Length = 2 |
| 34 | // CHECK: Width = 8 |
| 35 | |
| 36 | // CHECK: _v3i8 |
| 37 | // CHECK: Length = 3 |
| 38 | // CHECK: Width = 8 |
| 39 | |
| 40 | // CHECK: _v4i8 |
| 41 | // CHECK: Length = 4 |
| 42 | // CHECK: Width = 8 |
| 43 | |
| 44 | // CHECK: _v8i8 |
| 45 | // CHECK: Length = 8 |
| 46 | // CHECK: Width = 8 |