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 148 149
|
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s
define void @PR55648() #0 {
; CHECK-LABEL: PR55648:
; CHECK: # %bb.0: # %bb
; CHECK-NEXT: .p2align 4, 0x90
; CHECK-NEXT: .LBB0_1: # %bb38
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
; CHECK-NEXT: jmp .LBB0_1
bb:
%tmp = load <4 x i16>, ptr poison, align 16
%tmp1 = icmp ne <4 x i16> %tmp, <i16 1, i16 1, i16 1, i16 1>
%tmp2 = load <4 x i16>, ptr poison, align 8
%tmp3 = icmp ne <4 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1>
%tmp4 = load <4 x i16>, ptr poison, align 16
%tmp5 = icmp ne <4 x i16> %tmp4, <i16 1, i16 1, i16 1, i16 1>
%tmp6 = load <4 x i16>, ptr poison, align 8
%tmp7 = icmp ne <4 x i16> %tmp6, <i16 1, i16 1, i16 1, i16 1>
%tmp8 = load <4 x i16>, ptr poison, align 16
%tmp9 = icmp ne <4 x i16> %tmp8, <i16 1, i16 1, i16 1, i16 1>
%tmp10 = load <4 x i16>, ptr poison, align 8
%tmp11 = icmp ne <4 x i16> %tmp10, <i16 1, i16 1, i16 1, i16 1>
%tmp12 = load <4 x i16>, ptr poison, align 16
%tmp13 = icmp ne <4 x i16> %tmp12, <i16 1, i16 1, i16 1, i16 1>
%tmp14 = load <4 x i16>, ptr poison, align 8
%tmp15 = icmp ne <4 x i16> %tmp14, <i16 1, i16 1, i16 1, i16 1>
%tmp16 = load <4 x i16>, ptr poison, align 16
%tmp17 = icmp ne <4 x i16> %tmp16, <i16 1, i16 1, i16 1, i16 1>
%tmp18 = load <4 x i16>, ptr poison, align 8
%tmp19 = icmp ne <4 x i16> %tmp18, <i16 1, i16 1, i16 1, i16 1>
%tmp20 = load <4 x i16>, ptr poison, align 16
%tmp21 = icmp ne <4 x i16> %tmp20, <i16 1, i16 1, i16 1, i16 1>
%tmp22 = load <4 x i16>, ptr poison, align 8
%tmp23 = icmp ne <4 x i16> %tmp22, <i16 1, i16 1, i16 1, i16 1>
%tmp24 = load <4 x i16>, ptr poison, align 16
%tmp25 = icmp ne <4 x i16> %tmp24, <i16 1, i16 1, i16 1, i16 1>
%tmp26 = load <4 x i16>, ptr poison, align 8
%tmp27 = icmp ne <4 x i16> %tmp26, <i16 1, i16 1, i16 1, i16 1>
%tmp28 = load <4 x i16>, ptr poison, align 16
%tmp29 = icmp ne <4 x i16> %tmp28, <i16 1, i16 1, i16 1, i16 1>
%tmp30 = load <4 x i16>, ptr poison, align 8
%tmp31 = icmp ne <4 x i16> %tmp30, <i16 1, i16 1, i16 1, i16 1>
%tmp32 = load <4 x i16>, ptr poison, align 16
%tmp33 = icmp ne <4 x i16> %tmp32, <i16 1, i16 1, i16 1, i16 1>
%tmp34 = load <4 x i16>, ptr poison, align 8
%tmp35 = icmp ne <4 x i16> %tmp34, <i16 1, i16 1, i16 1, i16 1>
%tmp36 = load <4 x i16>, ptr poison, align 16
%tmp37 = icmp ne <4 x i16> %tmp36, <i16 1, i16 1, i16 1, i16 1>
br label %bb38
bb38: ; preds = %bb38, %bb
%tmp39 = phi i64 [ undef, %bb ], [ %tmp119, %bb38 ]
%tmp40 = insertelement <4 x i64> poison, i64 %tmp39, i64 0
%tmp41 = shufflevector <4 x i64> %tmp40, <4 x i64> poison, <4 x i32> zeroinitializer
%tmp42 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp41, <4 x i64> undef)
%tmp43 = select <4 x i1> undef, <4 x i64> %tmp42, <4 x i64> %tmp41
%tmp44 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp1, <4 x i32> poison)
%tmp45 = sext <4 x i32> %tmp44 to <4 x i64>
%tmp46 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> undef, <4 x i64> %tmp45)
%tmp47 = select <4 x i1> %tmp1, <4 x i64> %tmp46, <4 x i64> undef
%tmp48 = sext <4 x i32> undef to <4 x i64>
%tmp49 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp47, <4 x i64> %tmp48)
%tmp50 = select <4 x i1> %tmp3, <4 x i64> %tmp49, <4 x i64> %tmp47
%tmp51 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp5, <4 x i32> poison)
%tmp52 = sext <4 x i32> %tmp51 to <4 x i64>
%tmp53 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp50, <4 x i64> %tmp52)
%tmp54 = select <4 x i1> %tmp5, <4 x i64> %tmp53, <4 x i64> %tmp50
%tmp55 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp7, <4 x i32> poison)
%tmp56 = sext <4 x i32> %tmp55 to <4 x i64>
%tmp57 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp54, <4 x i64> %tmp56)
%tmp58 = select <4 x i1> %tmp7, <4 x i64> %tmp57, <4 x i64> %tmp54
%tmp59 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp9, <4 x i32> poison)
%tmp60 = sext <4 x i32> %tmp59 to <4 x i64>
%tmp61 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp58, <4 x i64> %tmp60)
%tmp62 = select <4 x i1> %tmp9, <4 x i64> %tmp61, <4 x i64> %tmp58
%tmp63 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp11, <4 x i32> poison)
%tmp64 = sext <4 x i32> %tmp63 to <4 x i64>
%tmp65 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp62, <4 x i64> %tmp64)
%tmp66 = select <4 x i1> %tmp11, <4 x i64> %tmp65, <4 x i64> %tmp62
%tmp67 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp13, <4 x i32> poison)
%tmp68 = sext <4 x i32> %tmp67 to <4 x i64>
%tmp69 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp66, <4 x i64> %tmp68)
%tmp70 = select <4 x i1> %tmp13, <4 x i64> %tmp69, <4 x i64> %tmp66
%tmp71 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp15, <4 x i32> poison)
%tmp72 = sext <4 x i32> %tmp71 to <4 x i64>
%tmp73 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp70, <4 x i64> %tmp72)
%tmp74 = select <4 x i1> %tmp15, <4 x i64> %tmp73, <4 x i64> %tmp70
%tmp75 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp17, <4 x i32> poison)
%tmp76 = sext <4 x i32> %tmp75 to <4 x i64>
%tmp77 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp74, <4 x i64> %tmp76)
%tmp78 = select <4 x i1> %tmp17, <4 x i64> %tmp77, <4 x i64> %tmp74
%tmp79 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp19, <4 x i32> poison)
%tmp80 = sext <4 x i32> %tmp79 to <4 x i64>
%tmp81 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp78, <4 x i64> %tmp80)
%tmp82 = select <4 x i1> %tmp19, <4 x i64> %tmp81, <4 x i64> %tmp78
%tmp83 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp21, <4 x i32> poison)
%tmp84 = sext <4 x i32> %tmp83 to <4 x i64>
%tmp85 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp82, <4 x i64> %tmp84)
%tmp86 = select <4 x i1> %tmp21, <4 x i64> %tmp85, <4 x i64> %tmp82
%tmp87 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp23, <4 x i32> poison)
%tmp88 = sext <4 x i32> %tmp87 to <4 x i64>
%tmp89 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp86, <4 x i64> %tmp88)
%tmp90 = select <4 x i1> %tmp23, <4 x i64> %tmp89, <4 x i64> %tmp86
%tmp91 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp25, <4 x i32> poison)
%tmp92 = sext <4 x i32> %tmp91 to <4 x i64>
%tmp93 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp90, <4 x i64> %tmp92)
%tmp94 = select <4 x i1> %tmp25, <4 x i64> %tmp93, <4 x i64> %tmp90
%tmp95 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp27, <4 x i32> poison)
%tmp96 = sext <4 x i32> %tmp95 to <4 x i64>
%tmp97 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp94, <4 x i64> %tmp96)
%tmp98 = select <4 x i1> %tmp27, <4 x i64> %tmp97, <4 x i64> %tmp94
%tmp99 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp29, <4 x i32> poison)
%tmp100 = sext <4 x i32> %tmp99 to <4 x i64>
%tmp101 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp98, <4 x i64> %tmp100)
%tmp102 = select <4 x i1> %tmp29, <4 x i64> %tmp101, <4 x i64> %tmp98
%tmp103 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp31, <4 x i32> poison)
%tmp104 = sext <4 x i32> %tmp103 to <4 x i64>
%tmp105 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp102, <4 x i64> %tmp104)
%tmp106 = select <4 x i1> %tmp31, <4 x i64> %tmp105, <4 x i64> %tmp102
%tmp107 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp33, <4 x i32> poison)
%tmp108 = sext <4 x i32> %tmp107 to <4 x i64>
%tmp109 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp106, <4 x i64> %tmp108)
%tmp110 = select <4 x i1> %tmp33, <4 x i64> %tmp109, <4 x i64> %tmp106
%tmp111 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp35, <4 x i32> poison)
%tmp112 = sext <4 x i32> %tmp111 to <4 x i64>
%tmp113 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp110, <4 x i64> %tmp112)
%tmp114 = select <4 x i1> %tmp35, <4 x i64> %tmp113, <4 x i64> %tmp110
%tmp115 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr undef, i32 4, <4 x i1> %tmp37, <4 x i32> poison)
%tmp116 = sext <4 x i32> %tmp115 to <4 x i64>
%tmp117 = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %tmp114, <4 x i64> %tmp116)
%tmp118 = select <4 x i1> %tmp37, <4 x i64> %tmp117, <4 x i64> %tmp114
%tmp119 = call i64 @llvm.vector.reduce.smin.v4i64(<4 x i64> %tmp118)
br label %bb38
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare i64 @llvm.smin.i64(i64, i64) #1
; Function Attrs: argmemonly nocallback nofree nosync nounwind readonly willreturn
declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>) #2
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x i64> @llvm.smin.v4i64(<4 x i64>, <4 x i64>) #1
; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
declare i64 @llvm.vector.reduce.smin.v4i64(<4 x i64>) #3
attributes #0 = { nofree norecurse nosync nounwind uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="btver2" "target-features"="+aes,+avx,+bmi,+crc32,+cx16,+cx8,+f16c,+fxsr,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prfchw,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+sse4a,+ssse3,+x87,+xsave,+xsaveopt" }
|