1
; RUN: llc < %s -march=x86-64
3
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
4
%"struct.DataOutBase::GmvFlags" = type { i32 }
5
%"struct.FE_DGPNonparametric<3>" = type { [1156 x i8], i32, %"struct.PolynomialSpace<1>" }
6
%"struct.FiniteElementData<1>" = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
7
%struct.Line = type { [2 x i32] }
8
%"struct.PolynomialSpace<1>" = type { %"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >", i32, %"struct.std::vector<int,std::allocator<int> >", %"struct.std::vector<int,std::allocator<int> >" }
9
%"struct.Polynomials::Polynomial<double>" = type { %struct.Subscriptor, %"struct.std::vector<double,std::allocator<double> >" }
10
%struct.Subscriptor = type { i32 (...)**, i32, %"struct.std::type_info"* }
11
%"struct.TableBase<2,double>" = type { %struct.Subscriptor, double*, i32, %"struct.TableIndices<2>" }
12
%"struct.TableIndices<2>" = type { %struct.Line }
13
%"struct.std::_Bit_const_iterator" = type { %"struct.std::_Bit_iterator_base" }
14
%"struct.std::_Bit_iterator_base" = type { i64*, i32 }
15
%"struct.std::_Bvector_base<std::allocator<bool> >" = type { %"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl" }
16
%"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl" = type { %"struct.std::_Bit_const_iterator", %"struct.std::_Bit_const_iterator", i64* }
17
%"struct.std::_Vector_base<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >" = type { %"struct.std::_Vector_base<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >::_Vector_impl" }
18
%"struct.std::_Vector_base<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >::_Vector_impl" = type { %"struct.Polynomials::Polynomial<double>"*, %"struct.Polynomials::Polynomial<double>"*, %"struct.Polynomials::Polynomial<double>"* }
19
%"struct.std::_Vector_base<double,std::allocator<double> >" = type { %"struct.std::_Vector_base<double,std::allocator<double> >::_Vector_impl" }
20
%"struct.std::_Vector_base<double,std::allocator<double> >::_Vector_impl" = type { double*, double*, double* }
21
%"struct.std::_Vector_base<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" }
22
%"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" = type { i32*, i32*, i32* }
23
%"struct.std::_Vector_base<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >" = type { %"struct.std::_Vector_base<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >::_Vector_impl" }
24
%"struct.std::_Vector_base<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >::_Vector_impl" = type { %"struct.std::vector<bool,std::allocator<bool> >"*, %"struct.std::vector<bool,std::allocator<bool> >"*, %"struct.std::vector<bool,std::allocator<bool> >"* }
25
%"struct.std::type_info" = type { i32 (...)**, i8* }
26
%"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >" = type { %"struct.std::_Vector_base<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >" }
27
%"struct.std::vector<bool,std::allocator<bool> >" = type { %"struct.std::_Bvector_base<std::allocator<bool> >" }
28
%"struct.std::vector<double,std::allocator<double> >" = type { %"struct.std::_Vector_base<double,std::allocator<double> >" }
29
%"struct.std::vector<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >" }
30
%"struct.std::vector<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >" = type { %"struct.std::_Vector_base<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >" }
32
declare void @_Unwind_Resume(i8*)
34
declare i8* @_Znwm(i64)
36
declare fastcc void @_ZNSt6vectorIjSaIjEEaSERKS1_(%"struct.std::vector<int,std::allocator<int> >"*, %"struct.std::vector<int,std::allocator<int> >"*)
38
declare fastcc void @_ZN9TableBaseILi2EdE6reinitERK12TableIndicesILi2EE(%"struct.TableBase<2,double>"* nocapture, i32, i32)
40
declare fastcc void @_ZNSt6vectorIbSaIbEEC1EmRKbRKS0_(%"struct.std::vector<bool,std::allocator<bool> >"* nocapture, i64, i8* nocapture)
42
declare fastcc void @_ZNSt6vectorIS_IbSaIbEESaIS1_EEC2EmRKS1_RKS2_(%"struct.std::vector<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >"* nocapture, i64, %"struct.std::vector<bool,std::allocator<bool> >"* nocapture)
44
declare fastcc void @_ZNSt6vectorIN11Polynomials10PolynomialIdEESaIS2_EED1Ev(%"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* nocapture)
46
declare fastcc void @_ZN24TensorProductPolynomialsILi3EEC2IN11Polynomials10PolynomialIdEEEERKSt6vectorIT_SaIS6_EE(%"struct.PolynomialSpace<1>"* nocapture, %"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* nocapture)
48
declare fastcc void @_ZN7FE_PolyI24TensorProductPolynomialsILi3EELi3EEC2EjRKS1_RK17FiniteElementDataILi3EERKSt6vectorIbSaIbEERKS9_ISB_SaISB_EE(%"struct.FE_DGPNonparametric<3>"*, i32, %"struct.PolynomialSpace<1>"* nocapture, %"struct.FiniteElementData<1>"* nocapture, %"struct.std::vector<bool,std::allocator<bool> >"* nocapture, %"struct.std::vector<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >"* nocapture)
50
declare fastcc void @_ZN11FE_Q_Helper12_GLOBAL__N_116invert_numberingERKSt6vectorIjSaIjEE(%"struct.std::vector<int,std::allocator<int> >"* noalias nocapture sret, %"struct.std::vector<int,std::allocator<int> >"* nocapture)
52
declare fastcc void @_ZN4FE_QILi3EE14get_dpo_vectorEj(%"struct.std::vector<int,std::allocator<int> >"* noalias nocapture sret, i32)
54
define fastcc void @_ZN4FE_QILi3EEC1Ej(i32 %degree) {
56
invoke fastcc void @_ZNSt6vectorIbSaIbEEC1EmRKbRKS0_(%"struct.std::vector<bool,std::allocator<bool> >"* undef, i64 1, i8* undef)
57
to label %invcont.i unwind label %lpad.i
59
invcont.i: ; preds = %entry
60
invoke fastcc void @_ZN4FE_QILi3EE14get_dpo_vectorEj(%"struct.std::vector<int,std::allocator<int> >"* noalias sret undef, i32 %degree)
61
to label %invcont1.i unwind label %lpad120.i
63
invcont1.i: ; preds = %invcont.i
64
invoke fastcc void @_ZNSt6vectorIS_IbSaIbEESaIS1_EEC2EmRKS1_RKS2_(%"struct.std::vector<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >"* undef, i64 undef, %"struct.std::vector<bool,std::allocator<bool> >"* undef)
65
to label %invcont3.i unwind label %lpad124.i
67
invcont3.i: ; preds = %invcont1.i
68
invoke fastcc void @_ZN4FE_QILi3EE14get_dpo_vectorEj(%"struct.std::vector<int,std::allocator<int> >"* noalias sret undef, i32 %degree)
69
to label %invcont4.i unwind label %lpad128.i
71
invcont4.i: ; preds = %invcont3.i
72
invoke fastcc void @_ZNSt6vectorIbSaIbEEC1EmRKbRKS0_(%"struct.std::vector<bool,std::allocator<bool> >"* undef, i64 undef, i8* undef)
73
to label %invcont6.i unwind label %lpad132.i
75
invcont6.i: ; preds = %invcont4.i
76
invoke fastcc void @_ZN4FE_QILi3EE14get_dpo_vectorEj(%"struct.std::vector<int,std::allocator<int> >"* noalias sret undef, i32 %degree)
77
to label %invcont7.i unwind label %lpad136.i
79
invcont7.i: ; preds = %invcont6.i
80
invoke fastcc void @_ZN11Polynomials19LagrangeEquidistant23generate_complete_basisEj(%"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* noalias sret undef, i32 %degree)
81
to label %invcont9.i unwind label %lpad140.i
83
invcont9.i: ; preds = %invcont7.i
84
invoke fastcc void @_ZN24TensorProductPolynomialsILi3EEC2IN11Polynomials10PolynomialIdEEEERKSt6vectorIT_SaIS6_EE(%"struct.PolynomialSpace<1>"* undef, %"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* undef)
85
to label %invcont10.i unwind label %lpad144.i
87
invcont10.i: ; preds = %invcont9.i
88
invoke fastcc void @_ZN7FE_PolyI24TensorProductPolynomialsILi3EELi3EEC2EjRKS1_RK17FiniteElementDataILi3EERKSt6vectorIbSaIbEERKS9_ISB_SaISB_EE(%"struct.FE_DGPNonparametric<3>"* undef, i32 %degree, %"struct.PolynomialSpace<1>"* undef, %"struct.FiniteElementData<1>"* undef, %"struct.std::vector<bool,std::allocator<bool> >"* undef, %"struct.std::vector<std::vector<bool, std::allocator<bool> >,std::allocator<std::vector<bool, std::allocator<bool> > > >"* undef)
89
to label %bb14.i unwind label %lpad148.i
91
bb14.i: ; preds = %invcont10.i
92
br i1 false, label %bb3.i164.i, label %bb.i.i.i.i160.i
94
bb.i.i.i.i160.i: ; preds = %bb14.i
97
bb3.i164.i: ; preds = %bb14.i
98
br i1 undef, label %bb10.i168.i, label %bb.i.i.i20.i166.i
100
bb.i.i.i20.i166.i: ; preds = %bb3.i164.i
103
bb10.i168.i: ; preds = %bb3.i164.i
104
invoke fastcc void @_ZNSt6vectorIN11Polynomials10PolynomialIdEESaIS2_EED1Ev(%"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* undef)
105
to label %bb21.i unwind label %lpad144.i
107
bb21.i: ; preds = %bb10.i168.i
108
invoke fastcc void @_ZNSt6vectorIN11Polynomials10PolynomialIdEESaIS2_EED1Ev(%"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* undef)
109
to label %bb28.i unwind label %lpad140.i
111
bb28.i: ; preds = %bb21.i
112
br i1 undef, label %bb35.i, label %bb.i.i.i175.i
114
bb.i.i.i175.i: ; preds = %bb28.i
117
bb35.i: ; preds = %bb.i.i.i175.i, %bb28.i
118
br i1 undef, label %bb42.i, label %bb.i.i.i205.i
120
bb.i.i.i205.i: ; preds = %bb35.i
123
bb42.i: ; preds = %bb35.i
124
br i1 undef, label %bb47.i, label %bb.i.i.i213.i
126
bb.i.i.i213.i: ; preds = %bb42.i
129
bb47.i: ; preds = %bb42.i
130
br i1 undef, label %bb59.i, label %bb.i.i.i247.i
132
bb.i.i.i247.i: ; preds = %bb47.i
135
bb59.i: ; preds = %bb47.i
136
br i1 undef, label %bb66.i, label %bb.i.i.i255.i
138
bb.i.i.i255.i: ; preds = %bb59.i
141
bb66.i: ; preds = %bb59.i
142
br i1 undef, label %bb71.i, label %bb.i.i.i262.i
144
bb.i.i.i262.i: ; preds = %bb66.i
147
bb71.i: ; preds = %bb.i.i.i262.i, %bb66.i
148
%tmp11.i.i29.i.i.i.i.i.i = invoke i8* @_Znwm(i64 12)
149
to label %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i.i unwind label %lpad.i.i.i.i.i.i ; <i8*> [#uses=0]
151
lpad.i.i.i.i.i.i: ; preds = %bb71.i
154
_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i.i: ; preds = %bb71.i
155
br i1 undef, label %_ZNSt6vectorIjSaIjEED1Ev.exit.i.i, label %bb.i.i.i.i94.i
157
bb.i.i.i.i94.i: ; preds = %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i.i
160
_ZNSt6vectorIjSaIjEED1Ev.exit.i.i: ; preds = %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i.i
161
%tmp11.i.i29.i.i.i.i5.i.i = invoke i8* @_Znwm(i64 undef)
162
to label %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i12.i.i unwind label %lpad.i.i.i.i8.i.i ; <i8*> [#uses=0]
164
lpad.i.i.i.i8.i.i: ; preds = %_ZNSt6vectorIjSaIjEED1Ev.exit.i.i
165
invoke void @_Unwind_Resume(i8* undef)
166
to label %.noexc.i9.i.i unwind label %lpad.i19.i.i
168
.noexc.i9.i.i: ; preds = %lpad.i.i.i.i8.i.i
171
_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i12.i.i: ; preds = %_ZNSt6vectorIjSaIjEED1Ev.exit.i.i
172
br i1 undef, label %bb50.i.i.i, label %bb.i.i.i.i.i.i.i.i.i.i
174
bb.i.i.i.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i.i.i.i, %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i12.i.i
175
br i1 undef, label %bb50.i.i.i, label %bb.i.i.i.i.i.i.i.i.i.i
177
bb50.i.i.i: ; preds = %bb.i.i.i.i.i.i.i.i.i.i, %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i12.i.i
178
invoke fastcc void @_ZN11FE_Q_Helper12_GLOBAL__N_116invert_numberingERKSt6vectorIjSaIjEE(%"struct.std::vector<int,std::allocator<int> >"* noalias sret undef, %"struct.std::vector<int,std::allocator<int> >"* undef)
179
to label %bb83.i unwind label %lpad188.i
181
lpad.i19.i.i: ; preds = %lpad.i.i.i.i8.i.i
184
bb83.i: ; preds = %bb50.i.i.i
185
br i1 undef, label %invcont84.i, label %bb.i.i.i221.i
187
bb.i.i.i221.i: ; preds = %bb83.i
190
invcont84.i: ; preds = %bb83.i
191
%tmp11.i.i29.i.i.i.i.i = invoke i8* @_Znwm(i64 undef)
192
to label %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i unwind label %lpad.i.i.i.i315.i ; <i8*> [#uses=0]
194
lpad.i.i.i.i315.i: ; preds = %invcont84.i
195
invoke void @_Unwind_Resume(i8* undef)
196
to label %.noexc.i316.i unwind label %lpad.i352.i
198
.noexc.i316.i: ; preds = %lpad.i.i.i.i315.i
201
_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i: ; preds = %invcont84.i
202
br i1 undef, label %bb50.i.i, label %bb.i.i.i.i.i.i.i.i320.i
204
bb.i.i.i.i.i.i.i.i320.i: ; preds = %bb.i.i.i.i.i.i.i.i320.i, %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i
205
br i1 undef, label %bb50.i.i, label %bb.i.i.i.i.i.i.i.i320.i
207
bb50.i.i: ; preds = %bb.i.i.i.i.i.i.i.i320.i, %_ZNSt12_Vector_baseIjSaIjEEC2EmRKS0_.exit.i.i.i.i
208
invoke fastcc void @_ZN11FE_Q_Helper12_GLOBAL__N_116invert_numberingERKSt6vectorIjSaIjEE(%"struct.std::vector<int,std::allocator<int> >"* noalias sret undef, %"struct.std::vector<int,std::allocator<int> >"* undef)
209
to label %invcont86.i unwind label %lpad200.i
211
lpad.i352.i: ; preds = %lpad.i.i.i.i315.i
214
invcont86.i: ; preds = %bb50.i.i
215
invoke fastcc void @_ZNSt6vectorIjSaIjEEaSERKS1_(%"struct.std::vector<int,std::allocator<int> >"* undef, %"struct.std::vector<int,std::allocator<int> >"* undef)
216
to label %.noexc380.i unwind label %lpad204.i
218
.noexc380.i: ; preds = %invcont86.i
219
br i1 undef, label %bb100.i, label %bb.i.i.i198.i
221
bb.i.i.i198.i: ; preds = %.noexc380.i
224
bb100.i: ; preds = %.noexc380.i
225
br i1 undef, label %invcont101.i, label %bb.i.i.i190.i
227
bb.i.i.i190.i: ; preds = %bb100.i
230
invcont101.i: ; preds = %bb100.i
231
invoke fastcc void @_ZN9TableBaseILi2EdE6reinitERK12TableIndicesILi2EE(%"struct.TableBase<2,double>"* undef, i32 undef, i32 undef)
232
to label %_ZN10FullMatrixIdEC1Ejj.exit.i.i unwind label %lpad.i.i.i.i.i
234
lpad.i.i.i.i.i: ; preds = %invcont101.i
237
_ZN10FullMatrixIdEC1Ejj.exit.i.i: ; preds = %invcont101.i
238
invoke fastcc void @_ZN9TableBaseILi2EdE6reinitERK12TableIndicesILi2EE(%"struct.TableBase<2,double>"* undef, i32 undef, i32 undef)
239
to label %_ZN10FullMatrixIdEC1Ejj.exit28.i.i unwind label %lpad.i.i.i27.i.i
241
lpad.i.i.i27.i.i: ; preds = %_ZN10FullMatrixIdEC1Ejj.exit.i.i
242
invoke void @_Unwind_Resume(i8* undef)
243
to label %.noexc.i.i unwind label %lpad.i.i
245
.noexc.i.i: ; preds = %lpad.i.i.i27.i.i
248
_ZN10FullMatrixIdEC1Ejj.exit28.i.i: ; preds = %_ZN10FullMatrixIdEC1Ejj.exit.i.i
249
br i1 undef, label %bb58.i.i, label %bb.i.i.i304.i.i
251
bb.i.i.i304.i.i: ; preds = %_ZN10FullMatrixIdEC1Ejj.exit28.i.i
254
bb58.i.i: ; preds = %_ZN10FullMatrixIdEC1Ejj.exit28.i.i
255
br i1 false, label %bb.i191.i, label %bb.i.i.i297.i.i
257
bb.i.i.i297.i.i: ; preds = %bb58.i.i
260
lpad.i.i: ; preds = %lpad.i.i.i27.i.i
263
bb.i191.i: ; preds = %.noexc232.i, %bb58.i.i
264
invoke fastcc void @_ZN9TableBaseILi2EdE6reinitERK12TableIndicesILi2EE(%"struct.TableBase<2,double>"* undef, i32 undef, i32 undef)
265
to label %.noexc232.i unwind label %lpad196.i
267
.noexc232.i: ; preds = %bb.i191.i
268
br i1 undef, label %bb29.loopexit.i.i, label %bb.i191.i
270
bb7.i215.i: ; preds = %bb9.i216.i
271
br i1 undef, label %bb16.preheader.i.i, label %bb8.i.i
273
bb8.i.i: ; preds = %bb7.i215.i
274
%tmp60.i.i = add i32 %0, 1 ; <i32> [#uses=1]
277
bb9.i216.i: ; preds = %bb29.loopexit.i.i, %bb8.i.i
278
%0 = phi i32 [ 0, %bb29.loopexit.i.i ], [ %tmp60.i.i, %bb8.i.i ] ; <i32> [#uses=2]
279
br i1 undef, label %bb7.i215.i, label %bb16.preheader.i.i
281
bb15.i.i: ; preds = %bb16.preheader.i.i, %bb15.i.i
282
%j1.0212.i.i = phi i32 [ %1, %bb15.i.i ], [ 0, %bb16.preheader.i.i ] ; <i32> [#uses=2]
283
%tmp6.i.i195.i.i = load i32* undef, align 4 ; <i32> [#uses=1]
284
%tmp231.i.i = mul i32 %0, %tmp6.i.i195.i.i ; <i32> [#uses=1]
285
%tmp13.i197.i.i = add i32 %j1.0212.i.i, %tmp231.i.i ; <i32> [#uses=0]
286
%1 = add i32 %j1.0212.i.i, 1 ; <i32> [#uses=1]
287
br i1 undef, label %bb15.i.i, label %bb17.i.i
289
bb17.i.i: ; preds = %bb16.preheader.i.i, %bb15.i.i
290
br label %bb16.preheader.i.i
292
bb16.preheader.i.i: ; preds = %bb17.i.i, %bb9.i216.i, %bb7.i215.i
293
br i1 undef, label %bb17.i.i, label %bb15.i.i
295
bb29.loopexit.i.i: ; preds = %.noexc232.i
298
lpad.i: ; preds = %entry
301
lpad120.i: ; preds = %invcont.i
304
lpad124.i: ; preds = %invcont1.i
307
lpad128.i: ; preds = %invcont3.i
310
lpad132.i: ; preds = %invcont4.i
313
lpad136.i: ; preds = %invcont6.i
316
lpad140.i: ; preds = %bb21.i, %invcont7.i
319
lpad144.i: ; preds = %bb10.i168.i, %invcont9.i
322
lpad148.i: ; preds = %invcont10.i
325
lpad188.i: ; preds = %bb50.i.i.i
328
lpad196.i: ; preds = %bb.i191.i
331
lpad200.i: ; preds = %bb50.i.i
334
lpad204.i: ; preds = %invcont86.i
338
declare fastcc void @_ZN11Polynomials19LagrangeEquidistant23generate_complete_basisEj(%"struct.std::vector<Polynomials::Polynomial<double>,std::allocator<Polynomials::Polynomial<double> > >"* noalias nocapture sret, i32)