Home | History | Annotate | Download | only in TableGen
      1 // RUN: llvm-tblgen %s | FileCheck %s
      2 // XFAIL: vg_leak
      3 
      4 def shifts {
      5     bits<2> b = 0b10;
      6     int i = 2;
      7     int shifted_b = !shl(b, 2);
      8     int shifted_i = !shl(i, 2);
      9 }
     10 // CHECK: def shifts
     11 // CHECK: shifted_b = 8
     12 // CHECK: shifted_i = 8
     13 
     14 class Int<int value> {
     15   int Value = value;
     16 }
     17 
     18 def v1022   : Int<1022>;
     19 
     20 // CHECK: def v0
     21 // CHECK: Value = 0
     22 
     23 // CHECK: def v1
     24 // CHECK: Value = 1
     25 
     26 // CHECK: def v1023
     27 // CHECK: Value = 1023
     28 def v1023 : Int<!or(v1022.Value, 1)>;
     29 
     30 def v1024   : Int<1024>;
     31 // CHECK: def v1024
     32 // CHECK: Value = 1024
     33 
     34 def v1025   : Int<!add(v1024.Value, 1)>;
     35 // CHECK: def v1025
     36 // CHECK: Value = 1025
     37 
     38 // CHECK: def v1a
     39 // CHECK: Value = 1
     40 
     41 // CHECK: def v2
     42 // CHECK: Value = 2
     43 def v2 : Int<2>;
     44 
     45 def v2048   : Int<!add(v1024.Value, v1024.Value)>;
     46 // CHECK: def v2048
     47 // CHECK: Value = 2048
     48 
     49 def v0 : Int<!and(v1024.Value, v2048.Value)>;
     50 def v1 : Int<!and(v1025.Value, 1)>;
     51 
     52 // CHECK: def v3072
     53 // CHECK: Value = 3072
     54 def v3072 : Int<!or(v1024.Value, v2048.Value)>;
     55 
     56 // CHECK: def v4
     57 // CHECK: Value = 4
     58 
     59 // CHECK: def v7
     60 // CHECK: Value = 7
     61 
     62 def v4 : Int<!add(v2.Value, 1, v1.Value)>;
     63 def v7 : Int<!or(v1.Value, v2.Value, v4.Value)>;
     64 def v1a : Int<!and(v7.Value, 5, v1.Value)>;
     65