Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[TableGen] Add true and false literals to represent booleans
Update the Programmer's Reference document. Add a test. Update a couple of tests with an improved error message. Differential Revision: https://reviews.llvm.org/D90635
- Loading branch information
Paul C. Anagnostopoulos
committed
Nov 5, 2020
1 parent
0e61d02
commit ae2cb4f
Showing
8 changed files
with
155 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
// RUN: llvm-tblgen %s | FileCheck %s | ||
// RUN: not llvm-tblgen -DERROR1 %s 2>&1 | FileCheck --check-prefix=ERROR1 %s | ||
|
||
// Tests for the true and false literals. | ||
|
||
defvar otherwise = true; | ||
defvar do_it = true; | ||
|
||
// CHECK: def rec1 | ||
// CHECK: bit flag1 = 1; | ||
// CHECK: bit flag2 = 0; | ||
// CHECK: int true_int = 1; | ||
|
||
def rec1 { | ||
bit flag1 = true; | ||
bit flag2 = false; | ||
int true_int = true; | ||
} | ||
|
||
// CHECK: def rec2_true | ||
|
||
if true then | ||
def rec2_true {} | ||
else | ||
def rec2_bad {} | ||
|
||
// CHECK: def rec3_false | ||
|
||
if false then | ||
def rec3_bad {} | ||
else | ||
def rec3_false {} | ||
|
||
// CHECK: def rec4 | ||
// CHECK: int value = 52; | ||
|
||
def rec4 { | ||
int value = !add(10, !if(!and(do_it, true), 42, 0)); | ||
} | ||
|
||
// CHECK: def rec5 | ||
// CHECK: string name = "snork"; | ||
|
||
def rec5 { | ||
string name = !cond(false: "foo", | ||
!not(do_it): "bar", | ||
otherwise: "snork"); | ||
} | ||
|
||
// CHECK: def rec6 | ||
// CHECK: bit xorFF = 0; | ||
// CHECK: bit xorFT = 1; | ||
// CHECK: bit xorTF = 1; | ||
// CHECK: bit xorTT = 0; | ||
|
||
def rec6 { | ||
bit xorFF = !xor(false, false); | ||
bit xorFT = !xor(false, true); | ||
bit xorTF = !xor(true, false); | ||
bit xorTT = !xor(true, true); | ||
} | ||
|
||
// CHECK: def rec7 | ||
// CHECK: bits<3> flags = { 1, 0, 1 }; | ||
|
||
def rec7 { | ||
bits<3> flags = { true, false, true }; | ||
} | ||
|
||
#ifdef ERROR1 | ||
// ERROR1: Record name '1' is not a string | ||
|
||
def true {} | ||
#endif | ||
|