; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 ; RUN: opt -passes=slp-vectorizer -S -slp-vectorize-non-power-of-2 < %s | FileCheck %s define i32 @test(ptr %Clause) { ; CHECK-LABEL: define i32 @test( ; CHECK-SAME: ptr [[CLAUSE:%.*]]) { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i8, ptr [[CLAUSE]], i64 64 ; CHECK-NEXT: [[CLAUSE_VAL:%.*]] = load i32, ptr [[TMP0]], align 8 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[CLAUSE]], i64 68 ; CHECK-NEXT: [[CLAUSE_VAL51:%.*]] = load i32, ptr [[TMP1]], align 4 ; CHECK-NEXT: [[ADD_I:%.*]] = sub i32 0, [[CLAUSE_VAL]] ; CHECK-NEXT: br label %[[FOR_COND_PREHEADER:.*]] ; CHECK: [[FOR_COND_PREHEADER]]: ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[CLAUSE]], i64 72 ; CHECK-NEXT: [[ADD_I5667:%.*]] = add i32 [[CLAUSE_VAL51]], [[CLAUSE_VAL]] ; CHECK-NEXT: [[CLAUSE_VAL7_I68:%.*]] = load i32, ptr [[TMP2]], align 8 ; CHECK-NEXT: [[ADD3_I69:%.*]] = add i32 [[ADD_I5667]], [[CLAUSE_VAL7_I68]] ; CHECK-NEXT: [[CMP470:%.*]] = icmp sgt i32 [[ADD3_I69]], 0 ; CHECK-NEXT: ret i32 0 ; entry: %0 = getelementptr i8, ptr %Clause, i64 64 %Clause.val = load i32, ptr %0, align 8 %1 = getelementptr i8, ptr %Clause, i64 68 %Clause.val51 = load i32, ptr %1, align 4 %add.i = sub i32 0, %Clause.val br label %for.cond.preheader for.cond.preheader: %2 = getelementptr i8, ptr %Clause, i64 72 %add.i5667 = add i32 %Clause.val51, %Clause.val %Clause.val7.i68 = load i32, ptr %2, align 8 %add3.i69 = add i32 %add.i5667, %Clause.val7.i68 %cmp470 = icmp sgt i32 %add3.i69, 0 ret i32 0 }