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}
|