summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/pr30693.ll
blob: 834365911ed51102c548a43276ec19eb0239d364 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
; PR30693
; RUN: llc < %s | FileCheck %s

; CHECK:      .p2align	2
; CHECK-NEXT: .LCPI0_0:
; CHECK-NOT:  vmovaps	.LCPI0_0(%rip),
; CHECK:      .cfi_endproc
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@var_35 = external local_unnamed_addr global i32, align 4
@var_14 = external local_unnamed_addr global i16, align 2

; Function Attrs: uwtable
define void @_Z3foov() local_unnamed_addr #0 {
entry:
  %0 = load i32, i32* @var_35, align 4
  %1 = load i16, i16* @var_14, align 2
  %conv34 = zext i16 %1 to i64
  %conv37 = ashr exact i64 undef, 32
  %sub316 = add i16 undef, -7198
  %cmp339981 = icmp sgt i32 undef, 0
  %cmp401989 = icmp sgt i32 undef, 0
  %cmp443994 = icmp sgt i32 undef, 0
  %lcmp.mod = icmp eq i64 undef, 0
  %broadcast.splat1461 = shufflevector <32 x i16> undef, <32 x i16> undef, <32 x i32> zeroinitializer
  %broadcast.splat1357 = shufflevector <32 x i16> undef, <32 x i16> undef, <32 x i32> zeroinitializer
  %broadcast.splat1435 = shufflevector <32 x i16> undef, <32 x i16> undef, <32 x i32> zeroinitializer
  %broadcast.splat1409 = shufflevector <32 x i16> undef, <32 x i16> undef, <32 x i32> zeroinitializer
  br label %for.cond11.preheader

for.cond11.preheader:                             ; preds = %for.cond.cleanup477.loopexit, %entry
  %div = sdiv i32 0, 0
  %mul31 = mul nsw i32 %div, %0
  %conv32 = sext i32 %mul31 to i64
  %div40 = sdiv i64 0, 0
  %div41 = sdiv i32 0, 0
  %conv42 = sext i32 %div41 to i64
  %mul43 = mul nsw i64 %conv32, %conv34
  %mul44 = mul i64 %mul43, %div40
  %mul45 = mul i64 %mul44, %conv37
  %mul46 = mul i64 %mul45, %conv42
  %add48 = add nsw i64 %mul46, 36611
  %conv49 = trunc i64 %add48 to i16
  br label %vector.ph1520

vector.ph1520:                                    ; preds = %for.cond11.preheader
  %broadcast.splatinsert1531 = insertelement <32 x i16> undef, i16 %conv49, i32 0
  %broadcast.splat1532 = shufflevector <32 x i16> %broadcast.splatinsert1531, <32 x i16> undef, <32 x i32> zeroinitializer
  br i1 %lcmp.mod, label %vector.body1512.prol.loopexit, label %vector.body1512.prol.preheader

vector.body1512.prol.preheader:                   ; preds = %vector.ph1520
  store <32 x i16> %broadcast.splat1532, <32 x i16>* undef, align 8, !tbaa !1
  unreachable

vector.body1512.prol.loopexit:                    ; preds = %vector.ph1520
  %add318 = add i16 %sub316, 0
  %2 = insertelement <16 x i16> undef, i16 %add318, i32 7
  %3 = insertelement <16 x i16> %2, i16 %add318, i32 8
  %4 = insertelement <16 x i16> %3, i16 %add318, i32 9
  %5 = insertelement <16 x i16> %4, i16 %add318, i32 10
  %6 = insertelement <16 x i16> %5, i16 %add318, i32 11
  %7 = insertelement <16 x i16> %6, i16 %add318, i32 12
  %8 = insertelement <16 x i16> %7, i16 %add318, i32 13
  %9 = insertelement <16 x i16> %8, i16 %add318, i32 14
  %10 = insertelement <16 x i16> undef, i16 %add318, i32 7
  %11 = insertelement <16 x i16> %10, i16 %add318, i32 8
  %12 = insertelement <16 x i16> %11, i16 %add318, i32 9
  %13 = insertelement <16 x i16> %12, i16 %add318, i32 10
  %14 = insertelement <16 x i16> %13, i16 %add318, i32 11
  %15 = insertelement <16 x i16> %14, i16 %add318, i32 12
  %16 = insertelement <16 x i16> %15, i16 %add318, i32 13
  %17 = insertelement <16 x i16> %16, i16 %add318, i32 14
  %18 = insertelement <16 x i16> %17, i16 %add318, i32 15
  %19 = insertelement <8 x i16> undef, i16 %add318, i32 7
  br label %for.cond74.loopexit.us

for.cond337.preheader.lr.ph:                      ; preds = %for.cond130.preheader.loopexit
  br i1 %cmp339981, label %for.cond337.preheader.us.preheader, label %for.cond.cleanup335

for.cond337.preheader.us.preheader:               ; preds = %for.cond337.preheader.lr.ph
  store <32 x i16> %broadcast.splat1461, <32 x i16>* undef, align 4, !tbaa !1
  unreachable

for.cond74.loopexit.us:                           ; preds = %for.cond74.loopexit.us, %vector.body1512.prol.loopexit
  store <8 x i16> zeroinitializer, <8 x i16>* undef, align 2, !tbaa !1
  %cmp76.us = icmp slt i64 undef, undef
  br i1 %cmp76.us, label %for.cond74.loopexit.us, label %for.cond130.preheader.loopexit

for.cond130.preheader.loopexit:                   ; preds = %for.cond74.loopexit.us
  store <16 x i16> zeroinitializer, <16 x i16>* undef, align 2, !tbaa !1
  store <16 x i16> %18, <16 x i16>* undef, align 2, !tbaa !1
  store <8 x i16> %19, <8 x i16>* undef, align 2, !tbaa !1
  br label %for.cond337.preheader.lr.ph

for.cond.cleanup335:                              ; preds = %for.cond337.preheader.lr.ph
  br label %for.cond380.preheader

for.cond380.preheader:                            ; preds = %for.cond.cleanup335
  br label %for.cond385.preheader

for.cond.cleanup378.loopexit:                     ; preds = %for.cond.cleanup388
  br label %for.cond481.preheader

for.cond385.preheader:                            ; preds = %for.cond380.preheader
  br i1 %cmp443994, label %for.cond392.preheader.us.preheader, label %for.cond392.preheader.preheader

for.cond392.preheader.preheader:                  ; preds = %for.cond385.preheader
  store <32 x i16> %broadcast.splat1435, <32 x i16>* undef, align 4, !tbaa !1
  store <32 x i16> %broadcast.splat1409, <32 x i16>* undef, align 4, !tbaa !1
  unreachable

for.cond392.preheader.us.preheader:               ; preds = %for.cond385.preheader
  br label %for.cond399.preheader.lr.ph.us.1

for.cond.cleanup388:                              ; preds = %for.cond399.preheader.lr.ph.us.1
  br label %for.cond.cleanup378.loopexit

for.cond481.preheader:                            ; preds = %for.cond.cleanup486, %for.cond.cleanup378.loopexit
  br label %for.cond.cleanup486

for.cond.cleanup477.loopexit:                     ; preds = %for.cond.cleanup486
  store <8 x i32> <i32 1221902566, i32 1221902566, i32 1221902566, i32 1221902566, i32 1221902566, i32 1221902566, i32 1221902566, i32 1221902566>, <8 x i32>* undef, align 4, !tbaa !5
  br label %for.cond11.preheader

for.cond.cleanup486:                              ; preds = %for.cond481.preheader
  br i1 undef, label %for.cond481.preheader, label %for.cond.cleanup477.loopexit

for.cond399.preheader.lr.ph.us.1:                 ; preds = %for.cond392.preheader.us.preheader
  br i1 %cmp401989, label %for.cond399.preheader.us.us.1.preheader, label %for.cond.cleanup388

for.cond399.preheader.us.us.1.preheader:          ; preds = %for.cond399.preheader.lr.ph.us.1
  store <32 x i16> %broadcast.splat1357, <32 x i16>* undef, align 4, !tbaa !1
  unreachable
}

attributes #0 = { uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="knl" "target-features"="+adx,+aes,+avx,+avx2,+avx512cd,+avx512er,+avx512f,+avx512pf,+bmi,+bmi2,+cx16,+f16c,+fma,+fsgsbase,+fxsr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prefetchwt1,+rdrnd,+rdseed,+rtm,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" "unsafe-fp-math"="false" "use-soft-float"="false" }

!llvm.ident = !{!0}

!0 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git ef66d4d58b9a2c6b3d31bbaf3ed2a70a9754a137) (http://llvm.org/git/llvm.git 5e661621191d6133a12effa103bfb2cbbdbb35ad)"}
!1 = !{!2, !2, i64 0}
!2 = !{!"short", !3, i64 0}
!3 = !{!"omnipotent char", !4, i64 0}
!4 = !{!"Simple C++ TBAA"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !3, i64 0}
OpenPOWER on IntegriCloud