[RISCV] Check isFixedLengthVector before calling getVectorNumElements in getSingleShu...
[llvm-project.git] / llvm / test / TableGen / initialized.td
blobe1743909feb64fb9e7e3103590da8bc5cefcc4b6
1 // RUN: llvm-tblgen %s | FileCheck %s
3 // CHECK: class F<Y [[ARG:.+]] = ?> {
4 // CHECK: string ret = !if(!initialized([[ARG]].str), [[ARG]].str, "N/A");
5 // CHECK: }
7 // CHECK-LABEL: def C
8 // CHECK: bit c0 = 0
9 // CHECK: bit c1 = 1
10 // CHECK: bit c2 = 1
11 def C {
12   bit c0 = !initialized(?);
13   bit c1 = !initialized(0);
14   bit c2 = !initialized(1);
17 class Y {
18   string str = ?;
21 class F<Y y> {
22   string ret = !if(!initialized(y.str), y.str, "N/A");
25 def Y0 : Y;
26 def Y1 : Y {
27   let str = "foo";
30 // CHECK-LABEL: def FY0
31 // CHECK: string ret = "N/A";
32 // CHECK-LABEL: def FY1
33 // CHECK: string ret = "foo";
34 def FY0 : F<Y0>;
35 def FY1 : F<Y1>;
37 class G<Y y> {
38   list<string> v = [y.str];
39   bit isInit = !initialized(v);
42 // CHECK-LABEL: def GY0
43 // CHECK: isInit = 1
44 // CHECK-LABEL: def GY1
45 // CHECK: isInit = 1
46 def GY0 : G<Y0>;
47 def GY1 : G<Y1>;
49 class Thing;
50 def aThing : Thing;
51 class Propagate<Thing t> {
52   Thing ret = !if(!initialized(t), t, ?);
54 // CHECK-LABEL: def PropagateNothing
55 // CHECK: Thing ret = ?
56 // CHECK-LABEL: def PropagateThing
57 // CHECK: Thing ret = aThing
58 def PropagateNothing : Propagate<?>;
59 def PropagateThing : Propagate<aThing>;