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