// RUN: llvm-tblgen %s | FileCheck %s // XFAIL: vg_leak // CHECK: def shifts // CHECK: shifted_b = 8 // CHECK: shifted_i = 8 def shifts { bits<2> b = 0b10; int i = 2; int shifted_b = !shl(b, 2); int shifted_i = !shl(i, 2); } class Int<int value> { int Value = value; } def int2 : Int<2>; def int1022 : Int<1022>; def int1024 : Int<1024>; // CHECK: def v0a // CHECK: Value = 0 def v0a : Int<!sub(int1024.Value, int1024.Value)>; // CHECK: def v0b // CHECK: Value = 0 def v0b : Int<!and(int1024.Value, 2048)>; // CHECK: def v1 // CHECK: Value = 1 def v1 : Int<!and(1025, 1)>; // CHECK: def v1019 // CHECK: Value = 1019 def v1019 : Int<!sub(int1022.Value, 3)>; // CHECK: def v1023 // CHECK: Value = 1023 def v1023 : Int<!or(int1022.Value, 1)>; def v1025 : Int<!add(int1024.Value, 1)>; // CHECK: def v1025 // CHECK: Value = 1025 // CHECK: def v12 // CHECK: Value = 12 def v12 : Int<!mul(4, 3)>; // CHECK: def v1a // CHECK: Value = 1 // CHECK: def v2048 // CHECK: Value = 2048 def v2048 : Int<!add(int1024.Value, int1024.Value)>; // CHECK: def v3072 // CHECK: Value = 3072 def v3072 : Int<!or(int1024.Value, v2048.Value)>; // CHECK: def v4 // CHECK: Value = 4 // CHECK: def v7 // CHECK: Value = 7 def v4 : Int<!add(int2.Value, 1, v1.Value)>; def v7 : Int<!or(v1.Value, int2.Value, v4.Value)>; def v1a : Int<!and(v7.Value, 5, v1.Value)>; // CHECK: def v84 // CHECK: Value = 84 def v84 : Int<!mul(v12.Value, v7.Value)>; // CHECK: def v9 // CHECK: Value = 9 def v9 : Int<!xor(v7.Value, 0x0E)>; // CHECK: def v924 // CHECK: Value = 924 def v924 : Int<!mul(v84.Value, 11)>; // CHECK: def v925 // CHECK: Value = 925 def v925 : Int<!sub(v924.Value, -1)>; // CHECK: def vneg // CHECK: Value = -2 def vneg : Int<!sub(v925.Value, 927)>;