llvm/test/CodeGen/PowerPC/pr18663.ll
Ehsan Amiri 38caf19333 Adding -verify-machineinstrs option to PowerPC tests
Currently we have a number of tests that fail with -verify-machineinstrs.
To detect this cases earlier we add the option to the testcases with the
exception of tests that will currently fail with this option. PR 27456 keeps
track of this failures.

No code review, as discussed with Hal Finkel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277624 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-03 18:17:35 +00:00

299 lines
16 KiB
LLVM

; RUN: llc -verify-machineinstrs < %s -march=ppc64 -mtriple=powerpc64-unknown-linux-gnu
; RUN: llc -verify-machineinstrs < %s -march=ppc64le -mtriple=powerpc64le-unknown-linux-gnu
%class.Point.1 = type { %class.Tensor.0 }
%class.Tensor.0 = type { [3 x double] }
%class.TriaObjectAccessor.57 = type { %class.TriaAccessor.56 }
%class.TriaAccessor.56 = type { i32, i32, %class.Triangulation.55* }
%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 }
%class.Subscriptor = type { i32 (...)**, i32, %"class.std::type_info.2"* }
%"class.std::type_info.2" = type { i32 (...)**, i8* }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<TriangulationLevel<3> *, std::allocator<TriangulationLevel<3> *> >::_Vector_impl.44" }
%"struct.std::_Vector_base<TriangulationLevel<3> *, std::allocator<TriangulationLevel<3> *> >::_Vector_impl.44" = type { %class.TriangulationLevel.43**, %class.TriangulationLevel.43**, %class.TriangulationLevel.43** }
%class.TriangulationLevel.43 = type { %class.TriangulationLevel.0.37, %"struct.TriangulationLevel<3>::HexesData.42" }
%class.TriangulationLevel.0.37 = type { %class.TriangulationLevel.1.31, %"struct.TriangulationLevel<2>::QuadsData.36" }
%class.TriangulationLevel.1.31 = type { %class.TriangulationLevel, %"struct.TriangulationLevel<1>::LinesData.30" }
%class.TriangulationLevel = type { %"class.std::vector.3.8", %"class.std::vector.3.8", %"class.std::vector.7.12", %"class.std::vector.12.15" }
%"class.std::vector.7.12" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int> > >::_Vector_impl.10" }
%"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"* }
%"struct.std::pair.9" = type opaque
%"class.std::vector.12.15" = type { %"struct.std::_Vector_base.13.14" }
%"struct.std::_Vector_base.13.14" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl.13" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl.13" = type { i32*, i32*, i32* }
%"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" }
%"class.std::vector.17.20" = type { %"struct.std::_Vector_base.18.19" }
%"struct.std::_Vector_base.18.19" = type { %"struct.std::_Vector_base<Line, std::allocator<Line> >::_Vector_impl.18" }
%"struct.std::_Vector_base<Line, std::allocator<Line> >::_Vector_impl.18" = type { %class.Line.17*, %class.Line.17*, %class.Line.17* }
%class.Line.17 = type { [2 x i32] }
%"class.std::vector.22.23" = type { %"struct.std::_Vector_base.23.22" }
%"struct.std::_Vector_base.23.22" = type { %"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl.21" }
%"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl.21" = type { i32*, i32*, i32* }
%"class.std::vector.27.26" = type { %"struct.std::_Vector_base.28.25" }
%"struct.std::_Vector_base.28.25" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl.24" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl.24" = type { i8*, i8*, i8* }
%"class.std::vector.32.29" = type { %"struct.std::_Vector_base.33.28" }
%"struct.std::_Vector_base.33.28" = type { %"struct.std::_Vector_base<void *, std::allocator<void *> >::_Vector_impl.27" }
%"struct.std::_Vector_base<void *, std::allocator<void *> >::_Vector_impl.27" = type { i8**, i8**, i8** }
%"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" }
%"class.std::vector.37.35" = type { %"struct.std::_Vector_base.38.34" }
%"struct.std::_Vector_base.38.34" = type { %"struct.std::_Vector_base<Quad, std::allocator<Quad> >::_Vector_impl.33" }
%"struct.std::_Vector_base<Quad, std::allocator<Quad> >::_Vector_impl.33" = type { %class.Quad.32*, %class.Quad.32*, %class.Quad.32* }
%class.Quad.32 = type { [4 x i32] }
%"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" }
%"class.std::vector.42.41" = type { %"struct.std::_Vector_base.43.40" }
%"struct.std::_Vector_base.43.40" = type { %"struct.std::_Vector_base<Hexahedron, std::allocator<Hexahedron> >::_Vector_impl.39" }
%"struct.std::_Vector_base<Hexahedron, std::allocator<Hexahedron> >::_Vector_impl.39" = type { %class.Hexahedron.38*, %class.Hexahedron.38*, %class.Hexahedron.38* }
%class.Hexahedron.38= type { [6 x i32] }
%"class.std::vector" = type { %"struct.std::_Vector_base.48.48" }
%"struct.std::_Vector_base.48.48" = type { %"struct.std::_Vector_base<Point<3>, std::allocator<Point<3> > >::_Vector_impl.47" }
%"struct.std::_Vector_base<Point<3>, std::allocator<Point<3> > >::_Vector_impl.47" = type { %class.Point.1*, %class.Point.1*, %class.Point.1* }
%"class.std::vector.3.8" = type { %"struct.std::_Bvector_base.7" }
%"struct.std::_Bvector_base.7" = type { %"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl.6" }
%"struct.std::_Bvector_base<std::allocator<bool> >::_Bvector_impl.6" = type { %"struct.std::_Bit_iterator.5", %"struct.std::_Bit_iterator.5", i64* }
%"struct.std::_Bit_iterator.5" = type { %"struct.std::_Bit_iterator_base.base.4", [4 x i8] }
%"struct.std::_Bit_iterator_base.base.4" = type <{ i64*, i32 }>
%class.Boundary.50 = type opaque
%struct.TriaNumberCache.54 = type { %struct.TriaNumberCache.52.52, i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
%struct.TriaNumberCache.52.52 = type { %struct.TriaNumberCache.53.51, i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
%struct.TriaNumberCache.53.51 = type { i32, %"class.std::vector.12.15", i32, %"class.std::vector.12.15" }
define void @_ZNK18TriaObjectAccessorILi3ELi3EE10barycenterEv(%class.Point.1* noalias nocapture sret %agg.result, %class.TriaObjectAccessor.57* %this) #0 align 2 {
entry:
%0 = load double, double* null, align 8
%1 = load double, double* undef, align 8
%call18 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 6)
%2 = load double, double* undef, align 8
%call21 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 7)
%3 = load double, double* undef, align 8
%call33 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 3)
%4 = load double, double* null, align 8
%5 = load double, double* undef, align 8
%call45 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 7)
%6 = load double, double* undef, align 8
%call48 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 0)
%7 = load double, double* undef, align 8
%call66 = tail call dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57* %this, i32 zeroext 6)
%8 = load double, double* undef, align 8
%mul334 = fmul double undef, 2.000000e+00
%mul579 = fmul double %2, %5
%mul597 = fmul double undef, %mul579
%mul679 = fmul double %2, %8
%mul1307 = fmul double undef, %1
%mul2092 = fmul double undef, %4
%mul2679 = fmul double undef, undef
%mul2931 = fmul double undef, %3
%mul3094 = fmul double undef, %3
%mul3096 = fmul double %mul3094, %8
%sub3097 = fsub double 0.000000e+00, %mul3096
%add3105 = fadd double undef, %sub3097
%add3113 = fadd double 0.000000e+00, %add3105
%sub3121 = fsub double %add3113, undef
%sub3129 = fsub double %sub3121, undef
%add3137 = fadd double undef, %sub3129
%add3145 = fadd double undef, %add3137
%sub3153 = fsub double %add3145, undef
%sub3162 = fsub double %sub3153, 0.000000e+00
%add3171 = fadd double undef, %sub3162
%add3180 = fadd double undef, %add3171
%add3189 = fadd double 0.000000e+00, %add3180
%mul3197 = fmul double %4, %mul2679
%sub3198 = fsub double %add3189, %mul3197
%sub3207 = fsub double %sub3198, 0.000000e+00
%mul3212 = fmul double %2, undef
%mul3214 = fmul double %mul3212, undef
%sub3215 = fsub double %sub3207, %mul3214
%mul3222 = fmul double %5, 0.000000e+00
%sub3223 = fsub double %sub3215, %mul3222
%mul3228 = fmul double %2, undef
%mul3230 = fmul double %3, %mul3228
%add3231 = fadd double %mul3230, %sub3223
%mul3236 = fmul double undef, undef
%mul3238 = fmul double %mul3236, %8
%add3239 = fadd double %mul3238, %add3231
%mul3244 = fmul double %mul1307, %3
%mul3246 = fmul double %mul3244, %7
%sub3247 = fsub double %add3239, %mul3246
%mul3252 = fmul double undef, undef
%mul3254 = fmul double %mul3252, %7
%add3255 = fadd double %mul3254, %sub3247
%sub3263 = fsub double %add3255, undef
%add3271 = fadd double 0.000000e+00, %sub3263
%sub3279 = fsub double %add3271, undef
%sub3287 = fsub double %sub3279, undef
%mul3292 = fmul double %mul1307, %5
%mul3294 = fmul double %mul3292, undef
%add3295 = fadd double %mul3294, %sub3287
%add3303 = fadd double undef, %add3295
%add3311 = fadd double 0.000000e+00, %add3303
%mul3318 = fmul double undef, %7
%sub3319 = fsub double %add3311, %mul3318
%mul3326 = fmul double %4, %mul3228
%sub3327 = fsub double %sub3319, %mul3326
%mul3334 = fmul double undef, %8
%sub3335 = fsub double %sub3327, %mul3334
%add3343 = fadd double undef, %sub3335
%mul3350 = fmul double %mul3212, %7
%add3351 = fadd double %mul3350, %add3343
%mul3358 = fmul double %mul2092, undef
%sub3359 = fsub double %add3351, %mul3358
%mul3362 = fmul double undef, %1
%mul3366 = fmul double 0.000000e+00, %8
%add3367 = fadd double %mul3366, %sub3359
%mul3372 = fmul double %mul3362, %5
%sub3375 = fsub double %add3367, undef
%add3383 = fadd double undef, %sub3375
%mul3389 = fmul double %2, 0.000000e+00
%mul3391 = fmul double %4, %mul3389
%sub3392 = fsub double %add3383, %mul3391
%mul3396 = fmul double undef, 0.000000e+00
%mul3400 = fmul double undef, %7
%sub3401 = fsub double %sub3392, %mul3400
%mul3407 = fmul double %mul3396, %4
%mul3409 = fmul double %mul3407, %8
%add3410 = fadd double %mul3409, %sub3401
%add3419 = fadd double undef, %add3410
%mul3423 = fmul double undef, %mul334
%add3428 = fadd double undef, %add3419
%add3437 = fadd double undef, %add3428
%mul3443 = fmul double %mul3423, %3
%mul3445 = fmul double %mul3443, %8
%sub3446 = fsub double %add3437, %mul3445
%mul3453 = fmul double %mul3372, undef
%add3454 = fadd double %mul3453, %sub3446
%add3462 = fadd double 0.000000e+00, %add3454
%mul3467 = fmul double %mul3362, %3
%mul3469 = fmul double %mul3467, %8
%sub3470 = fsub double %add3462, %mul3469
%add3478 = fadd double 0.000000e+00, %sub3470
%sub3486 = fsub double %add3478, undef
%mul3490 = fmul double %mul334, 0.000000e+00
%mul3492 = fmul double %2, %mul3490
%mul3494 = fmul double %mul3492, undef
%sub3495 = fsub double %sub3486, %mul3494
%sub3503 = fsub double %sub3495, undef
%sub3512 = fsub double %sub3503, undef
%add3520 = fadd double undef, %sub3512
%sub3528 = fsub double %add3520, undef
%add3537 = fadd double undef, %sub3528
%add3545 = fadd double 0.000000e+00, %add3537
%sub3553 = fsub double %add3545, undef
%add3561 = fadd double undef, %sub3553
%sub3569 = fsub double %add3561, undef
%mul3574 = fmul double undef, undef
%mul3576 = fmul double %mul3574, %7
%add3577 = fadd double %mul3576, %sub3569
%sub3585 = fsub double %add3577, undef
%mul3592 = fmul double %4, undef
%sub3593 = fsub double %sub3585, %mul3592
%mul3598 = fmul double %2, undef
%mul3600 = fmul double %mul3598, %7
%add3601 = fadd double %mul3600, %sub3593
%mul3608 = fmul double %mul3598, undef
%sub3609 = fsub double %add3601, %mul3608
%sub3618 = fsub double %sub3609, undef
%add3627 = fadd double undef, %sub3618
%add3635 = fadd double undef, %add3627
%mul3638 = fmul double undef, %2
%mul3640 = fmul double %mul3638, %5
%mul3642 = fmul double %mul3640, %7
%sub3643 = fsub double %add3635, %mul3642
%mul3648 = fmul double %1, undef
%mul3650 = fmul double %mul3648, %8
%sub3651 = fsub double %sub3643, %mul3650
%mul3656 = fmul double %mul3638, %4
%mul3658 = fmul double %mul3656, %8
%add3659 = fadd double %mul3658, %sub3651
%mul3666 = fmul double %5, 0.000000e+00
%add3667 = fadd double %mul3666, %add3659
%sub3675 = fsub double %add3667, undef
%mul3680 = fmul double %mul3638, %3
%mul3682 = fmul double %mul3680, %8
%sub3683 = fsub double %sub3675, %mul3682
%add3692 = fadd double 0.000000e+00, %sub3683
%mul3696 = fmul double undef, undef
%mul3698 = fmul double %mul3696, %4
%mul3700 = fmul double %mul3698, %8
%add3701 = fadd double %mul3700, %add3692
%sub3710 = fsub double %add3701, undef
%mul3716 = fmul double undef, %3
%mul3718 = fmul double %mul3716, %8
%sub3719 = fsub double %sub3710, %mul3718
%add3727 = fadd double undef, %sub3719
%mul3734 = fmul double %mul3574, %8
%add3735 = fadd double %mul3734, %add3727
%sub3743 = fsub double %add3735, 0.000000e+00
%add3751 = fadd double 0.000000e+00, %sub3743
%mul3758 = fmul double %6, 0.000000e+00
%sub3759 = fsub double %add3751, %mul3758
%mul3764 = fmul double undef, %mul2931
%mul3766 = fmul double %mul3764, undef
%sub3767 = fsub double %sub3759, %mul3766
%add3775 = fadd double 0.000000e+00, %sub3767
%add3783 = fadd double undef, %add3775
%sub3791 = fsub double %add3783, 0.000000e+00
%add3799 = fadd double undef, %sub3791
%sub3807 = fsub double %add3799, undef
%mul3814 = fmul double 0.000000e+00, undef
%add3815 = fadd double %mul3814, %sub3807
%mul3822 = fmul double %mul597, undef
%sub3823 = fsub double %add3815, %mul3822
%add3831 = fadd double undef, %sub3823
%mul3836 = fmul double undef, %mul679
%mul3838 = fmul double %6, %mul3836
%sub3839 = fsub double %add3831, %mul3838
%add3847 = fadd double undef, %sub3839
%add3855 = fadd double undef, %add3847
%mul3858 = fmul double undef, %8
%mul3860 = fmul double undef, %mul3858
%mul3862 = fmul double %6, %mul3860
%sub3863 = fsub double %add3855, %mul3862
%add3872 = fadd double undef, %sub3863
%sub3880 = fsub double %add3872, undef
%sub3889 = fsub double %sub3880, undef
%sub3898 = fsub double %sub3889, undef
%add3907 = fadd double undef, %sub3898
%sub3915 = fsub double %add3907, 0.000000e+00
%add3923 = fadd double undef, %sub3915
%mul3930 = fmul double %3, undef
%add3931 = fadd double %mul3930, %add3923
%add3940 = fadd double undef, %add3931
%sub3949 = fsub double %add3940, undef
%mul3952 = fmul double %2, %3
%sub3957 = fsub double %sub3949, undef
%sub3966 = fsub double %sub3957, undef
%add3975 = fadd double undef, %sub3966
%add3983 = fadd double undef, %add3975
%sub3992 = fsub double %add3983, undef
%mul3997 = fmul double undef, %mul3952
%mul3999 = fmul double %mul3997, %8
%add4000 = fadd double %mul3999, %sub3992
%sub4008 = fsub double %add4000, undef
%add4017 = fadd double undef, %sub4008
%add4026 = fadd double 0.000000e+00, %add4017
%mul4034 = fmul double %6, undef
%sub4035 = fsub double %add4026, %mul4034
%add4043 = fadd double undef, %sub4035
%sub4051 = fsub double %add4043, 0.000000e+00
%mul4916 = fmul double 0.000000e+00, %sub4051
%mul4917 = fmul double %mul4916, 0x3FC5555555555555
%mul7317 = fmul double 0.000000e+00, %3
%mul7670 = fmul double %0, %mul7317
%mul8882 = fmul double %0, 0.000000e+00
%mul8884 = fmul double undef, %mul8882
%sub8885 = fsub double 0.000000e+00, %mul8884
%mul8892 = fmul double %mul7670, undef
%add8893 = fadd double %mul8892, %sub8885
%mul8900 = fmul double undef, undef
%add8901 = fadd double %mul8900, %add8893
%mul9767 = fmul double 0.000000e+00, %add8901
%mul9768 = fmul double %mul9767, 0x3FC5555555555555
store double %mul4917, double* undef, align 8
store double %mul9768, double* undef, align 8
ret void
}
declare dereferenceable(24) %class.Point.1* @_ZNK18TriaObjectAccessorILi3ELi3EE6vertexEj(%class.TriaObjectAccessor.57*, i32 zeroext) #0