| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -S --passes=slp-vectorizer -mtriple=aarch64 < %s | FileCheck %s |
| |
| define void @test() { |
| ; CHECK-LABEL: define void @test() { |
| ; CHECK-NEXT: [[ENTRY:.*]]: |
| ; CHECK-NEXT: [[TMP0:%.*]] = load <2 x i32>, ptr null, align 1 |
| ; CHECK-NEXT: br label %[[IF_END:.*]] |
| ; CHECK: [[IF_THEN:.*]]: |
| ; CHECK-NEXT: br label %[[IF_END]] |
| ; CHECK: [[IF_END]]: |
| ; CHECK-NEXT: [[TMP1:%.*]] = phi <2 x i32> [ [[TMP0]], %[[ENTRY]] ], [ poison, %[[IF_THEN]] ] |
| ; CHECK-NEXT: [[TMP2:%.*]] = extractelement <2 x i32> [[TMP1]], i32 0 |
| ; CHECK-NEXT: store i32 [[TMP2]], ptr null, align 1 |
| ; CHECK-NEXT: br label %[[TRAP:.*]] |
| ; CHECK: [[BB3:.*:]] |
| ; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x i32> [[TMP1]], i32 1 |
| ; CHECK-NEXT: store i32 [[TMP4]], ptr null, align 1 |
| ; CHECK-NEXT: ret void |
| ; CHECK: [[TRAP]]: |
| ; CHECK-NEXT: unreachable |
| ; |
| entry: |
| %g_2197.real32.pre = load i32, ptr null, align 1 |
| %g_2197.imag33.pre = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr null, i32 0, i32 1), align 1 |
| br label %if.end |
| |
| if.then: |
| br label %if.end |
| |
| if.end: |
| %g_2197.imag33 = phi i32 [ %g_2197.imag33.pre, %entry ], [ 0, %if.then ] |
| %g_2197.real32 = phi i32 [ %g_2197.real32.pre, %entry ], [ 0, %if.then ] |
| store i32 %g_2197.real32, ptr null, align 1 |
| br label %trap |
| |
| 0: |
| store i32 %g_2197.imag33, ptr null, align 1 |
| ret void |
| |
| trap: |
| unreachable |
| } |