1; RUN: llc < %s -march=ppc64 -mtriple=powerpc64-unknown-linux-gnu 2; RUN: llc < %s -march=ppc64le -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 62define void @_ZNK18TriaObjectAccessorILi3ELi3EE10barycenterEv(%class.Point.1* noalias nocapture sret %agg.result, %class.TriaObjectAccessor.57* %this) #0 align 2 { 63entry: 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 297declare dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57*, i32 zeroext) #0 298 299