1 // RUN: llvm-tblgen %s | FileCheck %s
4 class Type<string name, int length, int width> {
10 multiclass OT1<string ss, int l, int w> {
11 def _#NAME# : Type<ss, l, w>;
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>;
22 defm i8 : OT2<"i8", 8>;
24 multiclass OT3<string ss, int w> {
25 defm v32#NAME : OT1<!strconcat("v32", ss), 32, w>;
28 multiclass OT4<string ss, int w> {
29 defm v64#NAME : OT1<!strconcat("v64", ss), 64, w>;
32 multiclass OT5<string ss, int w> {
33 defm NAME : OT3<ss, w>;
34 defm NAME : OT4<ss, w>;
37 defm i16 : OT5<"i16", 16>;