| ; 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: [[G_2197_REAL32_PRE:%.*]] = load i32, ptr null, align 1 |
| ; CHECK-NEXT: [[G_2197_IMAG33_PRE:%.*]] = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr null, i32 0, i32 1), align 1 |
| ; CHECK-NEXT: br label %[[IF_END:.*]] |
| ; CHECK: [[IF_THEN:.*]]: |
| ; CHECK-NEXT: br label %[[IF_END]] |
| ; CHECK: [[IF_END]]: |
| ; CHECK-NEXT: [[TMP4:%.*]] = phi i32 [ [[G_2197_IMAG33_PRE]], %[[ENTRY]] ], [ 0, %[[IF_THEN]] ] |
| ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[G_2197_REAL32_PRE]], %[[ENTRY]] ], [ 0, %[[IF_THEN]] ] |
| ; CHECK-NEXT: store i32 [[TMP2]], ptr null, align 1 |
| ; CHECK-NEXT: br label %[[TRAP:.*]] |
| ; CHECK: [[BB3:.*:]] |
| ; 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 |
| } |