brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 1b8ad6a Raw
139 lines · plain
1// RUN: llvm-tblgen %s | FileCheck %s2// XFAIL: vg_leak3 4// CHECK: --- Defs ---5 6// CHECK: def A00 {7// CHECK:   int sum = 7;8// CHECK: }9 10// CHECK: def A01 {11// CHECK:   int sum = 8;12// CHECK: }13 14// CHECK-NOT: def B015 16// CHECK: def B12 {17// CHECK:   int val = 9;18// CHECK: }19 20// CHECK: def B20 {21// CHECK:   int val = 7;22// CHECK: }23 24// CHECK: def B24 {25// CHECK:   int val = 11;26// CHECK: }27 28// CHECK: def B25 {29// CHECK:   int val = 12;30// CHECK: }31 32// CHECK: def C0433// CHECK: def C0534 35// CHECK: def D0A36// CHECK-NOT: def D0B37// CHECK: def D1A38// CHECK: def D1B39 40// CHECK: def E0141// CHECK: def E0242// CHECK-NOT: def E0C43 44// CHECK: def E1845// CHECK: def E1946// CHECK: def E1C3347// CHECK: def E1C3448// CHECK: def E1C5549// CHECK: def E1C5650 51// CHECK-NOT: def F052// CHECK-NOT: def F153// CHECK-NOT: def F2_0_054// CHECK:     def F2_1_055// CHECK-NOT: def F2_1_256// CHECK:     def F2_2_057// CHECK:     def F2_2_158// CHECK-NOT: def F2_2_259 60// CHECK: def G061// CHECK: def H0_G0_062 63multiclass A<int x> {64  foreach i = [0, 1] in {65    def NAME#i {66      int sum = !add(x, i);67    }68  }69}70 71defm A0 : A<7>;72 73multiclass B<int x, list<int> lst> {74  foreach i = lst in {75    def NAME#i {76      int val = !add(x, i);77    }78  }79}80 81defm B0 : B<7, []>;82defm B1 : B<7, [2]>;83defm B2 : B<7, [0, 4, 5]>;84 85multiclass C<int x> {86  foreach i = [x, !add(x, 1)] in {87    def NAME#i;88  }89}90 91defm C0 : C<4>;92 93multiclass D<bit b> {94  def A;95 96  foreach _ = !if(b, [0], []<int>) in97  def B;98}99 100defm D0 : D<0>;101defm D1 : D<1>;102 103multiclass E<list<int> lst, int x>104  : C<x> {105  foreach i = lst in106  defm C#i : C<i>;107}108 109defm E0 : E<[], 1>;110defm E1 : E<[3, 5], 8>;111 112multiclass F<list<int> lst> {113  foreach i = lst in114  foreach j = !foldl([]<int>, lst, lhs, x,115                     !if(!lt(x, i), !listconcat(lhs, [x]), lhs)) in116  def _#i#_#j;117}118 119defm F0 : F<[]>;120defm F1 : F<[0]>;121defm F2 : F<[0, 1, 2]>;122 123// If multiclass argument comes from loop variable,124// and field of argument is placed at foreach statement,125// the record field must be resolved correctly.126class G {127  list<int> val = [0];128}129 130multiclass H<G g> {131  foreach n = g.val in132    def _#g#_#n;133}134 135def G0 : G;136 137foreach g = [G0] in138  defm H0 : H<g>;139