xref: /llvm-project/llvm/test/TableGen/foreach-variable-range.td (revision 93b4f8538267e620de4a36e7cf0abc0d4f8d7c10)
1// RUN: llvm-tblgen %s
2
3class ConstantsImpl {
4  int Zero = 0;
5  int One = 1;
6  int Two = 2;
7  int Three = 3;
8  int Five = 5;
9}
10
11def Constants : ConstantsImpl;
12
13// CHECK-DAG: def var_bound_whitespaceA0
14// CHECK-DAG: def var_bound_whitespaceA1
15// CHECK-DAG: def var_bound_whitespaceA2
16foreach Index = Constants.Zero ... Constants.Two in {
17  def var_bound_whitespaceA#Index;
18}
19
20// CHECK-DAG: def var_bound_whitespaceB0
21// CHECK-DAG: def var_bound_whitespaceB1
22// CHECK-DAG: def var_bound_whitespaceB2
23foreach Index = Constants.Zero...Constants.Two in {
24  def var_bounds_whitespaceB#Index;
25}
26
27// CHECK-DAG: def var_bound_whitespaceC0
28// CHECK-DAG: def var_bound_whitespaceC1
29// CHECK-DAG: def var_bound_whitespaceC2
30foreach Index = Constants.Zero ...Constants.Two in {
31  def var_bounds_whitespaceC#Index;
32}
33
34// CHECK-DAG: def var_bound_whitespaceD0
35// CHECK-DAG: def var_bound_whitespaceD1
36// CHECK-DAG: def var_bound_whitespaceD2
37foreach Index = Constants.Zero... Constants.Two in {
38  def var_bounds_whitespaceD#Index;
39}
40
41// CHECK-DAG: def const_lower_whitespaceA0
42// CHECK-DAG: def const_lower_whitespaceA1
43// CHECK-DAG: def const_lower_whitespaceA2
44foreach Index = 0 ... Constants.Two in {
45  def const_lower_whitespaceA#Index;
46}
47
48// CHECK-DAG: def const_lower_whitespaceB0
49// CHECK-DAG: def const_lower_whitespaceB1
50// CHECK-DAG: def const_lower_whitespaceB2
51foreach Index = 0...Constants.Two in {
52  def const_lower_whitespaceB#Index;
53}
54
55// CHECK-DAG: def const_lower_whitespaceC0
56// CHECK-DAG: def const_lower_whitespaceC1
57// CHECK-DAG: def const_lower_whitespaceC2
58foreach Index = 0 ...Constants.Two in {
59  def const_lower_whitespaceC#Index;
60}
61
62// CHECK-DAG: def const_lower_whitespaceD0
63// CHECK-DAG: def const_lower_whitespaceD1
64// CHECK-DAG: def const_lower_whitespaceD2
65foreach Index = 0... Constants.Two in {
66  def const_lower_whitespaceD#Index;
67}
68
69// CHECK-DAG: def const_upper_whitespaceA0
70// CHECK-DAG: def const_upper_whitespaceA1
71// CHECK-DAG: def const_upper_whitespaceA2
72foreach Index = Constants.Zero ... 2 in {
73  def const_upper_whitespaceA#Index;
74}
75
76// CHECK-DAG: def const_upper_whitespaceB0
77// CHECK-DAG: def const_upper_whitespaceB1
78// CHECK-DAG: def const_upper_whitespaceB2
79foreach Index = Constants.Zero...2 in {
80  def const_upper_whitespaceB#Index;
81}
82
83// CHECK-DAG: def const_upper_whitespaceC0
84// CHECK-DAG: def const_upper_whitespaceC1
85// CHECK-DAG: def const_upper_whitespaceC2
86foreach Index = Constants.Zero ...2 in {
87  def const_upper_whitespaceC#Index;
88}
89
90// CHECK-DAG: def const_upper_whitespaceD0
91// CHECK-DAG: def const_upper_whitespaceD1
92// CHECK-DAG: def const_upper_whitespaceD2
93foreach Index = Constants.Zero... 2 in {
94  def const_upper_whitespaceD#Index;
95}
96
97// CHECK-DAG: def multi_rangeA0
98// CHECK-DAG: def multi_rangeA1
99// CHECK-DAG: def multi_rangeA2
100// CHECK-DAG: def multi_rangeA3
101foreach Index = {Constants.Zero...Constants.One, Constants.Two...Constants.Three} in {
102  def multi_rangeA#Index;
103}
104
105// CHECK-DAG: def multi_rangeB0
106// CHECK-DAG: def multi_rangeB1
107// CHECK-DAG: def multi_rangeB3
108// CHECK-DAG: def multi_rangeB4
109// CHECK-DAG: def multi_rangeB5
110foreach Index = {0...Constants.One, Constants.Three...Constants.Five} in {
111  def multi_rangeB#Index;
112}
113
114// CHECK-DAG: def multi_rangeC0
115// CHECK-DAG: def multi_rangeC1
116// CHECK-DAG: def multi_rangeC2
117// CHECK-DAG: def multi_rangeC3
118foreach Index = {0...Constants.One, 2...Constants.Three} in {
119  def multi_rangeC#Index;
120}
121
122// CHECK-DAG: def multi_rangeD0
123// CHECK-DAG: def multi_rangeD1
124// CHECK-DAG: def multi_rangeD2
125// CHECK-DAG: def multi_rangeD3
126foreach Index = {0...1, Constants.Two...3} in {
127  def multi_rangeD#Index;
128}
129