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