| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt < %s -S -slp-vectorizer | FileCheck %s |
| |
| ; This code has GEPs with different index types, which should not |
| ; matter for the SLPVectorizer. |
| |
| target triple = "x86_64--linux" |
| |
| define void @foo() { |
| ; CHECK-LABEL: @foo( |
| ; CHECK-NEXT: entry: |
| ; CHECK-NEXT: br label [[BB1:%.*]] |
| ; CHECK: bb1: |
| ; CHECK-NEXT: [[LS1_PH:%.*]] = phi float* [ [[_TMP1:%.*]], [[BB1]] ], [ undef, [[ENTRY:%.*]] ] |
| ; CHECK-NEXT: [[LS2_PH:%.*]] = phi float* [ [[_TMP2:%.*]], [[BB1]] ], [ undef, [[ENTRY]] ] |
| ; CHECK-NEXT: store float undef, float* [[LS1_PH]] |
| ; CHECK-NEXT: [[_TMP1]] = getelementptr float, float* [[LS1_PH]], i32 1 |
| ; CHECK-NEXT: [[_TMP2]] = getelementptr float, float* [[LS2_PH]], i64 4 |
| ; CHECK-NEXT: br i1 false, label [[BB1]], label [[BB2:%.*]] |
| ; CHECK: bb2: |
| ; CHECK-NEXT: ret void |
| ; |
| entry: |
| br label %bb1 |
| |
| bb1: |
| %ls1.ph = phi float* [ %_tmp1, %bb1 ], [ undef, %entry ] |
| %ls2.ph = phi float* [ %_tmp2, %bb1 ], [ undef, %entry ] |
| store float undef, float* %ls1.ph |
| %_tmp1 = getelementptr float, float* %ls1.ph, i32 1 |
| %_tmp2 = getelementptr float, float* %ls2.ph, i64 4 |
| br i1 false, label %bb1, label %bb2 |
| |
| bb2: |
| ret void |
| } |