// 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