brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 5fa5702 Raw
95 lines · plain
1// RUN: llvm-tblgen %s | FileCheck %s2// RUN: not llvm-tblgen -DERROR1 %s 2>&1 | FileCheck --check-prefix=ERROR1 %s3 4// Tests for the true and false literals.5 6defvar otherwise = true;7defvar do_it = true;8 9// CHECK: def rec110// CHECK:   bit flag1 = 1;11// CHECK:   bit flag2 = 0;12// CHECK:   int true_int = 1;13 14def rec1 {15  bit flag1 = true;16  bit flag2 = false;17  int true_int = true;18}19 20// CHECK: def rec2_true21 22if true then23  def rec2_true {}24else25  def rec2_bad {}26 27// CHECK: def rec3_false28 29if false then30  def rec3_bad {}31else32  def rec3_false {}33 34// CHECK: def rec435// CHECK:   int value = 52;36 37def rec4 {38  int value = !add(10, !if(!and(do_it, true), 42, 0));39}40 41// CHECK: def rec542// CHECK:    string name = "snork";43 44def rec5 {45  string name = !cond(false:       "foo",46                      !not(do_it): "bar",47                      otherwise:   "snork");48}49 50// CHECK: def rec651// CHECK:   bit xorFF = 0;52// CHECK:   bit xorFT = 1;53// CHECK:   bit xorTF = 1;54// CHECK:   bit xorTT = 0;55 56def 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);61}62 63// CHECK: def rec764// CHECK:   bits<3> flags = { 1, 0, 1 };65 66def rec7 {67  bits<3> flags = { true, false, true };68}69 70// `!and` and `!or` should be short-circuited such that any of the `!head` or71// `!tail` on empty list below will never be evaluated.72// CHECK: def rec873// CHECK:   bit v = 0;74// CHECK:   int v2 = -1;75// CHECK:   list<int> newSeq = [];76// CHECK:   list<int> newSeq2 = [];77 78class Foo <list<int> seq = []> {79  bit v = !and(false, !head(seq));80  int v2 = !or(-1, !head(seq));81 82  bit unresolved = !ne(!find(NAME, "BAR"), -1);83  list<int> newSeq  = !if(!and(false, unresolved), !tail(seq), seq);84  list<int> newSeq2 = !if(!or(-1, unresolved), seq, !tail(seq));85}86 87def rec8 : Foo<>;88 89#ifdef ERROR190// ERROR1: Record name '1' is not a string91 92def true {}93#endif94 95