[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / Transforms / SLPVectorizer / X86 / crash_bullet3.ll
blob925b348cdeec1f19d9404a167a2ddd189fa8145b
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=slp-vectorizer,dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7 | FileCheck %s
4 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-n8:16:32:64-S128"
5 target triple = "x86_64-apple-macosx10.8.0"
7 %class.btVector3.23.221.463.485.507.573.595.683.727.749.815.837.991.1585.1607.1629.1651.1849.2047.2069.2091.2113 = type { [4 x float] }
9 ; Function Attrs: ssp uwtable
10 define void @_ZN11HullLibrary15CleanupVerticesEjPK9btVector3jRjPS0_fRS0_(ptr %vertices) #0 align 2 {
11 ; CHECK-LABEL: @_ZN11HullLibrary15CleanupVerticesEjPK9btVector3jRjPS0_fRS0_(
12 ; CHECK-NEXT:  entry:
13 ; CHECK-NEXT:    br i1 undef, label [[RETURN:%.*]], label [[IF_END:%.*]]
14 ; CHECK:       if.end:
15 ; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
16 ; CHECK:       for.body:
17 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN17_1:%.*]], label [[IF_END22_1:%.*]]
18 ; CHECK:       for.end36:
19 ; CHECK-NEXT:    br label [[FOR_BODY144:%.*]]
20 ; CHECK:       for.body144:
21 ; CHECK-NEXT:    br i1 undef, label [[FOR_END227:%.*]], label [[FOR_BODY144]]
22 ; CHECK:       for.end227:
23 ; CHECK-NEXT:    br i1 undef, label [[FOR_END271:%.*]], label [[FOR_BODY233:%.*]]
24 ; CHECK:       for.body233:
25 ; CHECK-NEXT:    br i1 undef, label [[FOR_BODY233]], label [[FOR_END271]]
26 ; CHECK:       for.end271:
27 ; CHECK-NEXT:    [[TMP0:%.*]] = phi <2 x float> [ splat (float 0x47EFFFFFE0000000), [[FOR_END227]] ], [ undef, [[FOR_BODY233]] ]
28 ; CHECK-NEXT:    [[TMP1:%.*]] = fsub <2 x float> undef, [[TMP0]]
29 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN291:%.*]], label [[RETURN]]
30 ; CHECK:       if.then291:
31 ; CHECK-NEXT:    [[TMP2:%.*]] = fmul <2 x float> [[TMP1]], splat (float 5.000000e-01)
32 ; CHECK-NEXT:    [[TMP3:%.*]] = fadd <2 x float> [[TMP0]], [[TMP2]]
33 ; CHECK-NEXT:    br i1 undef, label [[IF_END332:%.*]], label [[IF_ELSE319:%.*]]
34 ; CHECK:       if.else319:
35 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN325:%.*]], label [[IF_END327:%.*]]
36 ; CHECK:       if.then325:
37 ; CHECK-NEXT:    br label [[IF_END327]]
38 ; CHECK:       if.end327:
39 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN329:%.*]], label [[IF_END332]]
40 ; CHECK:       if.then329:
41 ; CHECK-NEXT:    br label [[IF_END332]]
42 ; CHECK:       if.end332:
43 ; CHECK-NEXT:    [[TMP4:%.*]] = phi <2 x float> [ [[TMP1]], [[IF_THEN329]] ], [ [[TMP1]], [[IF_END327]] ], [ splat (float 0x3F847AE140000000), [[IF_THEN291]] ]
44 ; CHECK-NEXT:    [[TMP5:%.*]] = fsub <2 x float> [[TMP3]], [[TMP4]]
45 ; CHECK-NEXT:    store <2 x float> [[TMP5]], ptr [[VERTICES:%.*]], align 4
46 ; CHECK-NEXT:    br label [[RETURN]]
47 ; CHECK:       return:
48 ; CHECK-NEXT:    ret void
49 ; CHECK:       if.then17.1:
50 ; CHECK-NEXT:    br label [[IF_END22_1]]
51 ; CHECK:       if.end22.1:
52 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN17_2:%.*]], label [[IF_END22_2:%.*]]
53 ; CHECK:       if.then17.2:
54 ; CHECK-NEXT:    br label [[IF_END22_2]]
55 ; CHECK:       if.end22.2:
56 ; CHECK-NEXT:    br i1 undef, label [[FOR_END36:%.*]], label [[FOR_BODY]]
58 entry:
59   br i1 undef, label %return, label %if.end
61 if.end:                                           ; preds = %entry
62   br label %for.body
64 for.body:                                         ; preds = %if.end22.2, %if.end
65   br i1 undef, label %if.then17.1, label %if.end22.1
67 for.end36:                                        ; preds = %if.end22.2
68   br label %for.body144
70 for.body144:                                      ; preds = %for.body144, %for.end36
71   br i1 undef, label %for.end227, label %for.body144
73 for.end227:                                       ; preds = %for.body144
74   br i1 undef, label %for.end271, label %for.body233
76 for.body233:                                      ; preds = %for.body233, %for.end227
77   br i1 undef, label %for.body233, label %for.end271
79 for.end271:                                       ; preds = %for.body233, %for.end227
80   %0 = phi float [ 0x47EFFFFFE0000000, %for.end227 ], [ undef, %for.body233 ]
81   %1 = phi float [ 0x47EFFFFFE0000000, %for.end227 ], [ undef, %for.body233 ]
82   %sub275 = fsub float undef, %1
83   %sub279 = fsub float undef, %0
84   br i1 undef, label %if.then291, label %return
86 if.then291:                                       ; preds = %for.end271
87   %mul292 = fmul float %sub275, 5.000000e-01
88   %add294 = fadd float %1, %mul292
89   %mul295 = fmul float %sub279, 5.000000e-01
90   %add297 = fadd float %0, %mul295
91   br i1 undef, label %if.end332, label %if.else319
93 if.else319:                                       ; preds = %if.then291
94   br i1 undef, label %if.then325, label %if.end327
96 if.then325:                                       ; preds = %if.else319
97   br label %if.end327
99 if.end327:                                        ; preds = %if.then325, %if.else319
100   br i1 undef, label %if.then329, label %if.end332
102 if.then329:                                       ; preds = %if.end327
103   br label %if.end332
105 if.end332:                                        ; preds = %if.then329, %if.end327, %if.then291
106   %dx272.1 = phi float [ %sub275, %if.then329 ], [ %sub275, %if.end327 ], [ 0x3F847AE140000000, %if.then291 ]
107   %dy276.1 = phi float [ undef, %if.then329 ], [ undef, %if.end327 ], [ 0x3F847AE140000000, %if.then291 ]
108   %sub334 = fsub float %add294, %dx272.1
109   %sub338 = fsub float %add297, %dy276.1
110   store float %sub334, ptr %vertices, align 4
111   %arrayidx3.i607 = getelementptr inbounds %class.btVector3.23.221.463.485.507.573.595.683.727.749.815.837.991.1585.1607.1629.1651.1849.2047.2069.2091.2113, ptr %vertices, i64 0, i32 0, i64 1
112   store float %sub338, ptr %arrayidx3.i607, align 4
113   br label %return
115 return:                                           ; preds = %if.end332, %for.end271, %entry
116   ret void
118 if.then17.1:                                      ; preds = %for.body
119   br label %if.end22.1
121 if.end22.1:                                       ; preds = %if.then17.1, %for.body
122   br i1 undef, label %if.then17.2, label %if.end22.2
124 if.then17.2:                                      ; preds = %if.end22.1
125   br label %if.end22.2
127 if.end22.2:                                       ; preds = %if.then17.2, %if.end22.1
128   br i1 undef, label %for.end36, label %for.body
131 attributes #0 = { ssp uwtable "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }