1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 -slp-max-reg-size=128 | FileCheck %s
3
4define void @inst_size(i64* %a, <2 x i64> %b) {
5; CHECK-LABEL: @inst_size(
6; CHECK-NEXT:  entry:
7; CHECK-NEXT:    [[VAL:%.*]] = extractelement <2 x i64> [[B:%.*]], i32 0
8; CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to <4 x i64>*
9; CHECK-NEXT:    [[TMP1:%.*]] = load <4 x i64>, <4 x i64>* [[TMP0]], align 4
10; CHECK-NEXT:    [[T41:%.*]] = icmp sgt i64 0, [[VAL]]
11; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt <4 x i64> zeroinitializer, [[TMP1]]
12; CHECK-NEXT:    br label [[BLOCK:%.*]]
13; CHECK:       block:
14; CHECK-NEXT:    [[PHI1:%.*]] = phi i1 [ [[T41]], [[ENTRY:%.*]] ]
15; CHECK-NEXT:    [[TMP3:%.*]] = phi <4 x i1> [ [[TMP2]], [[ENTRY]] ]
16; CHECK-NEXT:    ret void
17;
18entry:
19  %val = extractelement <2 x i64> %b, i32 0
20  %tmpl1 = load i64, i64* %a, align 4
21  %ptr2 = getelementptr inbounds i64, i64* %a, i64 1
22  %tmpl2 = load i64, i64* %ptr2, align 4
23  %ptr3 = getelementptr inbounds i64, i64* %a, i64 2
24  %tmpl3 = load i64, i64* %ptr3, align 4
25  %ptr4 = getelementptr inbounds i64, i64* %a, i64 3
26  %tmpl4 = load i64, i64* %ptr4, align 4
27  %t41 = icmp sgt i64 0, %val
28  %t42 = icmp sgt i64 0, %tmpl1
29  %t43 = icmp sgt i64 0, %tmpl2
30  %t44 = icmp sgt i64 0, %tmpl3
31  %t45 = icmp sgt i64 0, %tmpl4
32  br label %block
33block:
34  %phi1 = phi i1 [ %t41, %entry]
35  %phi2 = phi i1 [ %t42, %entry]
36  %phi3 = phi i1 [ %t43, %entry]
37  %phi4 = phi i1 [ %t44, %entry]
38  %phi5 = phi i1 [ %t45, %entry]
39  ret void
40}
41