[llvm] Remove `br i1 undef` from some regression tests [NFC] (#115688)
[llvm-project.git] / llvm / test / TableGen / true-false.td
blob5a59f20b21d252e8ebb22257a1c2e762515a2988
1 // RUN: llvm-tblgen %s | FileCheck %s
2 // RUN: not llvm-tblgen -DERROR1 %s 2>&1 | FileCheck --check-prefix=ERROR1 %s
4 // Tests for the true and false literals.
6 defvar otherwise = true;
7 defvar do_it = true;
9 // CHECK: def rec1
10 // CHECK:   bit flag1 = 1;
11 // CHECK:   bit flag2 = 0;
12 // CHECK:   int true_int = 1;
14 def rec1 {
15   bit flag1 = true;
16   bit flag2 = false;
17   int true_int = true;
20 // CHECK: def rec2_true
22 if true then
23   def rec2_true {}
24 else
25   def rec2_bad {}
27 // CHECK: def rec3_false
29 if false then
30   def rec3_bad {}
31 else
32   def rec3_false {}
34 // CHECK: def rec4
35 // CHECK:   int value = 52;
37 def rec4 {
38   int value = !add(10, !if(!and(do_it, true), 42, 0));
41 // CHECK: def rec5
42 // CHECK:    string name = "snork";
44 def rec5 {
45   string name = !cond(false:       "foo",
46                       !not(do_it): "bar",
47                       otherwise:   "snork");
50 // CHECK: def rec6
51 // CHECK:   bit xorFF = 0;
52 // CHECK:   bit xorFT = 1;
53 // CHECK:   bit xorTF = 1;
54 // CHECK:   bit xorTT = 0;
56 def rec6 {
57   bit xorFF = !xor(false, false);
58   bit xorFT = !xor(false, true);
59   bit xorTF = !xor(true, false);
60   bit xorTT = !xor(true, true);
63 // CHECK: def rec7
64 // CHECK:   bits<3> flags = { 1, 0, 1 };
66 def rec7 {
67   bits<3> flags = { true, false, true };
70 // `!and` and `!or` should be short-circuit such that `!tail` on empty list will never
71 // be evaluated.
72 // CHECK: def rec8
73 // CHECK:   list<int> newSeq = [];
74 // CHECK:   list<int> newSeq2 = [];
76 class Foo <list<int> seq = []> {
77   bit unresolved = !ne(!find(NAME, "BAR"), -1);
78   list<int> newSeq  = !if(!and(false, unresolved), !tail(seq), seq);
79   list<int> newSeq2 = !if(!or(-1, unresolved), seq, !tail(seq));
82 def rec8 : Foo<>;
84 #ifdef ERROR1
85 // ERROR1: Record name '1' is not a string
87 def true {}
88 #endif