[X86] Add test case for PR55648
This commit is contained in:
parent
d5af6a3808
commit
a7317a5728
|
@ -0,0 +1,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" }
|
Loading…
Reference in New Issue