Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu
      2 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu
      3 
      4 %class.Point.1 = type { %class.Tensor.0 }
      5 %class.Tensor.0 = type { [3 x double] }
      6 %class.TriaObjectAccessor.57 = type { %class.TriaAccessor.56 }
      7 %class.TriaAccessor.56 = type { i32, i32, %class.Triangulation.55* }
      8 %class.Triangulation.55 = type { %class.Subscriptor, %"class.std::vector.46", %"class.std::vector", %"class.std::vector.3.8", [255 x %class.Boundary.50*], i32, %struct.TriaNumberCache.54 }
      9 %class.Subscriptor = type { i32 (...)**, i32, %"class.std::type_info.2"* }
     10 %"class.std::type_info.2" = type { i32 (...)**, i8* }
     11 %"class.std::vector.46" = type { %"struct.std::_Vector_base.45" }
     12 %"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<TriangulationLevel<3> *, std::allocator<TriangulationLevel<3> *> >::_Vector_impl.44" }
     13 %"struct.std::_Vector_base<TriangulationLevel<3> *, std::allocator<TriangulationLevel<3> *> >::_Vector_impl.44" = type { %class.TriangulationLevel.43**, %class.TriangulationLevel.43**, %class.TriangulationLevel.43** }
     14 %class.TriangulationLevel.43 = type { %class.TriangulationLevel.0.37, %"struct.TriangulationLevel<3>::HexesData.42" }
     15 %class.TriangulationLevel.0.37 = type { %class.TriangulationLevel.1.31, %"struct.TriangulationLevel<2>::QuadsData.36" }
     16 %class.TriangulationLevel.1.31 = type { %class.TriangulationLevel, %"struct.TriangulationLevel<1>::LinesData.30" }
     17 %class.TriangulationLevel = type { %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.7.12", %"class.std::vector.12.15" }
     18 %"class.std::vector.7.12" = type { %"struct.std::_Vector_base" }
     19 %"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int> > >::_Vector_impl.10" }
     20 %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int> > >::_Vector_impl.10" = type { %"struct.std::pair.9"*, %"struct.std::pair.9"*, %"struct.std::pair.9"* }
     21 %"struct.std::pair.9" = type opaque
     22 %"class.std::vector.12.15" = type { %"struct.std::_Vector_base.13.14" }
     23 %"struct.std::_Vector_base.13.14" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl.13" }
     24 %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl.13" = type { i32*, i32*, i32* }
     25 %"struct.TriangulationLevel<1>::LinesData.30" = type { %"class.std::vector.17.20", %"class.std::vector.22.23", %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.27.26", %"class.std::vector.32.29" }
     26 %"class.std::vector.17.20" = type { %"struct.std::_Vector_base.18.19" }
     27 %"struct.std::_Vector_base.18.19" = type { %"struct.std::_Vector_base<Line, std::allocator<Line> >::_Vector_impl.18" }
     28 %"struct.std::_Vector_base<Line, std::allocator<Line> >::_Vector_impl.18" = type { %class.Line.17*, %class.Line.17*, %class.Line.17* }
     29 %class.Line.17 = type { [2 x i32] }
     30 %"class.std::vector.22.23" = type { %"struct.std::_Vector_base.23.22" }
     31 %"struct.std::_Vector_base.23.22" = type { %"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl.21" }
     32 %"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl.21" = type { i32*, i32*, i32* }
     33 %"class.std::vector.27.26" = type { %"struct.std::_Vector_base.28.25" }
     34 %"struct.std::_Vector_base.28.25" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl.24" }
     35 %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl.24" = type { i8*, i8*, i8* }
     36 %"class.std::vector.32.29" = type { %"struct.std::_Vector_base.33.28" }
     37 %"struct.std::_Vector_base.33.28" = type { %"struct.std::_Vector_base<void *, std::allocator<void *> >::_Vector_impl.27" }
     38 %"struct.std::_Vector_base<void *, std::allocator<void *> >::_Vector_impl.27" = type { i8**, i8**, i8** }
     39 %"struct.TriangulationLevel<2>::QuadsData.36" = type { %"class.std::vector.37.35", %"class.std::vector.22.23", %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.27.26", %"class.std::vector.32.29" }
     40 %"class.std::vector.37.35" = type { %"struct.std::_Vector_base.38.34" }
     41 %"struct.std::_Vector_base.38.34" = type { %"struct.std::_Vector_base<Quad, std::allocator<Quad> >::_Vector_impl.33" }
     42 %"struct.std::_Vector_base<Quad, std::allocator<Quad> >::_Vector_impl.33" = type { %class.Quad.32*, %class.Quad.32*, %class.Quad.32* }
     43 %class.Quad.32 = type { [4 x i32] }
     44 %"struct.TriangulationLevel<3>::HexesData.42" = type { %"class.std::vector.42.41", %"class.std::vector.22.23", %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.27.26", %"class.std::vector.32.29", %"class.std::vector.3.8" }
     45 %"class.std::vector.42.41" = type { %"struct.std::_Vector_base.43.40" }
     46 %"struct.std::_Vector_base.43.40" = type { %"struct.std::_Vector_base<Hexahedron, std::allocator<Hexahedron> >::_Vector_impl.39" }
     47 %"struct.std::_Vector_base<Hexahedron, std::allocator<Hexahedron> >::_Vector_impl.39" = type { %class.Hexahedron.38*, %class.Hexahedron.38*, %class.Hexahedron.38* }
     48 %class.Hexahedron.38= type { [6 x i32] }
     49 %"class.std::vector" = type { %"struct.std::_Vector_base.48.48" }
     50 %"struct.std::_Vector_base.48.48" = type { %"struct.std::_Vector_base<Point<3>, std::allocator<Point<3> > >::_Vector_impl.47" }
     51 %"struct.std::_Vector_base<Point<3>, std::allocator<Point<3> > >::_Vector_impl.47" = type { %class.Point.1*, %class.Point.1*, %class.Point.1* }
     52 %"class.std::vector.3.8" = type { %"struct.std::_Bvector_base.7" }
     53 %"struct.std::_Bvector_base.7" = type { %"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl.6" }
     54 %"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl.6" = type { %"struct.std::_Bit_iterator.5", %"struct.std::_Bit_iterator.5", i64* }
     55 %"struct.std::_Bit_iterator.5" = type { %"struct.std::_Bit_iterator_base.base.4", [4 x i8] }
     56 %"struct.std::_Bit_iterator_base.base.4" = type <{ i64*, i32 }>
     57 %class.Boundary.50 = type opaque
     58 %struct.TriaNumberCache.54 = type { %struct.TriaNumberCache.52.52, i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
     59 %struct.TriaNumberCache.52.52 = type { %struct.TriaNumberCache.53.51, i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
     60 %struct.TriaNumberCache.53.51 = type { i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
     61 
     62 define void @_ZNK18TriaObjectAccessorILi3ELi3EE10barycenterEv(%class.Point.1* noalias nocapture sret %agg.result, %class.TriaObjectAccessor.57* %this) #0 align 2 {
     63 entry:
     64   %0 = load double, double* null, align 8
     65   %1 = load double, double* undef, align 8
     66   %call18 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 6)
     67   %2 = load double, double* undef, align 8
     68   %call21 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 7)
     69   %3 = load double, double* undef, align 8
     70   %call33 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 3)
     71   %4 = load double, double* null, align 8
     72   %5 = load double, double* undef, align 8
     73   %call45 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 7)
     74   %6 = load double, double* undef, align 8
     75   %call48 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 0)
     76   %7 = load double, double* undef, align 8
     77   %call66 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 6)
     78   %8 = load double, double* undef, align 8
     79   %mul334 = fmul double undef, 2.000000e+00
     80   %mul579 = fmul double %2, %5
     81   %mul597 = fmul double undef, %mul579
     82   %mul679 = fmul double %2, %8
     83   %mul1307 = fmul double undef, %1
     84   %mul2092 = fmul double undef, %4
     85   %mul2679 = fmul double undef, undef
     86   %mul2931 = fmul double undef, %3
     87   %mul3094 = fmul double undef, %3
     88   %mul3096 = fmul double %mul3094, %8
     89   %sub3097 = fsub double 0.000000e+00, %mul3096
     90   %add3105 = fadd double undef, %sub3097
     91   %add3113 = fadd double 0.000000e+00, %add3105
     92   %sub3121 = fsub double %add3113, undef
     93   %sub3129 = fsub double %sub3121, undef
     94   %add3137 = fadd double undef, %sub3129
     95   %add3145 = fadd double undef, %add3137
     96   %sub3153 = fsub double %add3145, undef
     97   %sub3162 = fsub double %sub3153, 0.000000e+00
     98   %add3171 = fadd double undef, %sub3162
     99   %add3180 = fadd double undef, %add3171
    100   %add3189 = fadd double 0.000000e+00, %add3180
    101   %mul3197 = fmul double %4, %mul2679
    102   %sub3198 = fsub double %add3189, %mul3197
    103   %sub3207 = fsub double %sub3198, 0.000000e+00
    104   %mul3212 = fmul double %2, undef
    105   %mul3214 = fmul double %mul3212, undef
    106   %sub3215 = fsub double %sub3207, %mul3214
    107   %mul3222 = fmul double %5, 0.000000e+00
    108   %sub3223 = fsub double %sub3215, %mul3222
    109   %mul3228 = fmul double %2, undef
    110   %mul3230 = fmul double %3, %mul3228
    111   %add3231 = fadd double %mul3230, %sub3223
    112   %mul3236 = fmul double undef, undef
    113   %mul3238 = fmul double %mul3236, %8
    114   %add3239 = fadd double %mul3238, %add3231
    115   %mul3244 = fmul double %mul1307, %3
    116   %mul3246 = fmul double %mul3244, %7
    117   %sub3247 = fsub double %add3239, %mul3246
    118   %mul3252 = fmul double undef, undef
    119   %mul3254 = fmul double %mul3252, %7
    120   %add3255 = fadd double %mul3254, %sub3247
    121   %sub3263 = fsub double %add3255, undef
    122   %add3271 = fadd double 0.000000e+00, %sub3263
    123   %sub3279 = fsub double %add3271, undef
    124   %sub3287 = fsub double %sub3279, undef
    125   %mul3292 = fmul double %mul1307, %5
    126   %mul3294 = fmul double %mul3292, undef
    127   %add3295 = fadd double %mul3294, %sub3287
    128   %add3303 = fadd double undef, %add3295
    129   %add3311 = fadd double 0.000000e+00, %add3303
    130   %mul3318 = fmul double undef, %7
    131   %sub3319 = fsub double %add3311, %mul3318
    132   %mul3326 = fmul double %4, %mul3228
    133   %sub3327 = fsub double %sub3319, %mul3326
    134   %mul3334 = fmul double undef, %8
    135   %sub3335 = fsub double %sub3327, %mul3334
    136   %add3343 = fadd double undef, %sub3335
    137   %mul3350 = fmul double %mul3212, %7
    138   %add3351 = fadd double %mul3350, %add3343
    139   %mul3358 = fmul double %mul2092, undef
    140   %sub3359 = fsub double %add3351, %mul3358
    141   %mul3362 = fmul double undef, %1
    142   %mul3366 = fmul double 0.000000e+00, %8
    143   %add3367 = fadd double %mul3366, %sub3359
    144   %mul3372 = fmul double %mul3362, %5
    145   %sub3375 = fsub double %add3367, undef
    146   %add3383 = fadd double undef, %sub3375
    147   %mul3389 = fmul double %2, 0.000000e+00
    148   %mul3391 = fmul double %4, %mul3389
    149   %sub3392 = fsub double %add3383, %mul3391
    150   %mul3396 = fmul double undef, 0.000000e+00
    151   %mul3400 = fmul double undef, %7
    152   %sub3401 = fsub double %sub3392, %mul3400
    153   %mul3407 = fmul double %mul3396, %4
    154   %mul3409 = fmul double %mul3407, %8
    155   %add3410 = fadd double %mul3409, %sub3401
    156   %add3419 = fadd double undef, %add3410
    157   %mul3423 = fmul double undef, %mul334
    158   %add3428 = fadd double undef, %add3419
    159   %add3437 = fadd double undef, %add3428
    160   %mul3443 = fmul double %mul3423, %3
    161   %mul3445 = fmul double %mul3443, %8
    162   %sub3446 = fsub double %add3437, %mul3445
    163   %mul3453 = fmul double %mul3372, undef
    164   %add3454 = fadd double %mul3453, %sub3446
    165   %add3462 = fadd double 0.000000e+00, %add3454
    166   %mul3467 = fmul double %mul3362, %3
    167   %mul3469 = fmul double %mul3467, %8
    168   %sub3470 = fsub double %add3462, %mul3469
    169   %add3478 = fadd double 0.000000e+00, %sub3470
    170   %sub3486 = fsub double %add3478, undef
    171   %mul3490 = fmul double %mul334, 0.000000e+00
    172   %mul3492 = fmul double %2, %mul3490
    173   %mul3494 = fmul double %mul3492, undef
    174   %sub3495 = fsub double %sub3486, %mul3494
    175   %sub3503 = fsub double %sub3495, undef
    176   %sub3512 = fsub double %sub3503, undef
    177   %add3520 = fadd double undef, %sub3512
    178   %sub3528 = fsub double %add3520, undef
    179   %add3537 = fadd double undef, %sub3528
    180   %add3545 = fadd double 0.000000e+00, %add3537
    181   %sub3553 = fsub double %add3545, undef
    182   %add3561 = fadd double undef, %sub3553
    183   %sub3569 = fsub double %add3561, undef
    184   %mul3574 = fmul double undef, undef
    185   %mul3576 = fmul double %mul3574, %7
    186   %add3577 = fadd double %mul3576, %sub3569
    187   %sub3585 = fsub double %add3577, undef
    188   %mul3592 = fmul double %4, undef
    189   %sub3593 = fsub double %sub3585, %mul3592
    190   %mul3598 = fmul double %2, undef
    191   %mul3600 = fmul double %mul3598, %7
    192   %add3601 = fadd double %mul3600, %sub3593
    193   %mul3608 = fmul double %mul3598, undef
    194   %sub3609 = fsub double %add3601, %mul3608
    195   %sub3618 = fsub double %sub3609, undef
    196   %add3627 = fadd double undef, %sub3618
    197   %add3635 = fadd double undef, %add3627
    198   %mul3638 = fmul double undef, %2
    199   %mul3640 = fmul double %mul3638, %5
    200   %mul3642 = fmul double %mul3640, %7
    201   %sub3643 = fsub double %add3635, %mul3642
    202   %mul3648 = fmul double %1, undef
    203   %mul3650 = fmul double %mul3648, %8
    204   %sub3651 = fsub double %sub3643, %mul3650
    205   %mul3656 = fmul double %mul3638, %4
    206   %mul3658 = fmul double %mul3656, %8
    207   %add3659 = fadd double %mul3658, %sub3651
    208   %mul3666 = fmul double %5, 0.000000e+00
    209   %add3667 = fadd double %mul3666, %add3659
    210   %sub3675 = fsub double %add3667, undef
    211   %mul3680 = fmul double %mul3638, %3
    212   %mul3682 = fmul double %mul3680, %8
    213   %sub3683 = fsub double %sub3675, %mul3682
    214   %add3692 = fadd double 0.000000e+00, %sub3683
    215   %mul3696 = fmul double undef, undef
    216   %mul3698 = fmul double %mul3696, %4
    217   %mul3700 = fmul double %mul3698, %8
    218   %add3701 = fadd double %mul3700, %add3692
    219   %sub3710 = fsub double %add3701, undef
    220   %mul3716 = fmul double undef, %3
    221   %mul3718 = fmul double %mul3716, %8
    222   %sub3719 = fsub double %sub3710, %mul3718
    223   %add3727 = fadd double undef, %sub3719
    224   %mul3734 = fmul double %mul3574, %8
    225   %add3735 = fadd double %mul3734, %add3727
    226   %sub3743 = fsub double %add3735, 0.000000e+00
    227   %add3751 = fadd double 0.000000e+00, %sub3743
    228   %mul3758 = fmul double %6, 0.000000e+00
    229   %sub3759 = fsub double %add3751, %mul3758
    230   %mul3764 = fmul double undef, %mul2931
    231   %mul3766 = fmul double %mul3764, undef
    232   %sub3767 = fsub double %sub3759, %mul3766
    233   %add3775 = fadd double 0.000000e+00, %sub3767
    234   %add3783 = fadd double undef, %add3775
    235   %sub3791 = fsub double %add3783, 0.000000e+00
    236   %add3799 = fadd double undef, %sub3791
    237   %sub3807 = fsub double %add3799, undef
    238   %mul3814 = fmul double 0.000000e+00, undef
    239   %add3815 = fadd double %mul3814, %sub3807
    240   %mul3822 = fmul double %mul597, undef
    241   %sub3823 = fsub double %add3815, %mul3822
    242   %add3831 = fadd double undef, %sub3823
    243   %mul3836 = fmul double undef, %mul679
    244   %mul3838 = fmul double %6, %mul3836
    245   %sub3839 = fsub double %add3831, %mul3838
    246   %add3847 = fadd double undef, %sub3839
    247   %add3855 = fadd double undef, %add3847
    248   %mul3858 = fmul double undef, %8
    249   %mul3860 = fmul double undef, %mul3858
    250   %mul3862 = fmul double %6, %mul3860
    251   %sub3863 = fsub double %add3855, %mul3862
    252   %add3872 = fadd double undef, %sub3863
    253   %sub3880 = fsub double %add3872, undef
    254   %sub3889 = fsub double %sub3880, undef
    255   %sub3898 = fsub double %sub3889, undef
    256   %add3907 = fadd double undef, %sub3898
    257   %sub3915 = fsub double %add3907, 0.000000e+00
    258   %add3923 = fadd double undef, %sub3915
    259   %mul3930 = fmul double %3, undef
    260   %add3931 = fadd double %mul3930, %add3923
    261   %add3940 = fadd double undef, %add3931
    262   %sub3949 = fsub double %add3940, undef
    263   %mul3952 = fmul double %2, %3
    264   %sub3957 = fsub double %sub3949, undef
    265   %sub3966 = fsub double %sub3957, undef
    266   %add3975 = fadd double undef, %sub3966
    267   %add3983 = fadd double undef, %add3975
    268   %sub3992 = fsub double %add3983, undef
    269   %mul3997 = fmul double undef, %mul3952
    270   %mul3999 = fmul double %mul3997, %8
    271   %add4000 = fadd double %mul3999, %sub3992
    272   %sub4008 = fsub double %add4000, undef
    273   %add4017 = fadd double undef, %sub4008
    274   %add4026 = fadd double 0.000000e+00, %add4017
    275   %mul4034 = fmul double %6, undef
    276   %sub4035 = fsub double %add4026, %mul4034
    277   %add4043 = fadd double undef, %sub4035
    278   %sub4051 = fsub double %add4043, 0.000000e+00
    279   %mul4916 = fmul double 0.000000e+00, %sub4051
    280   %mul4917 = fmul double %mul4916, 0x3FC5555555555555
    281   %mul7317 = fmul double 0.000000e+00, %3
    282   %mul7670 = fmul double %0, %mul7317
    283   %mul8882 = fmul double %0, 0.000000e+00
    284   %mul8884 = fmul double undef, %mul8882
    285   %sub8885 = fsub double 0.000000e+00, %mul8884
    286   %mul8892 = fmul double %mul7670, undef
    287   %add8893 = fadd double %mul8892, %sub8885
    288   %mul8900 = fmul double undef, undef
    289   %add8901 = fadd double %mul8900, %add8893
    290   %mul9767 = fmul double 0.000000e+00, %add8901
    291   %mul9768 = fmul double %mul9767, 0x3FC5555555555555
    292   store double %mul4917, double* undef, align 8
    293   store double %mul9768, double* undef, align 8
    294   ret void
    295 }
    296 
    297 declare dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57*, i32 zeroext) #0
    298 
    299