; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -slp-vectorizer -S 2>%t | FileCheck %s ; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t ; WARN-NOT: warning target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64-unknown-linux-gnu" ; This test check that we are not crashing or changing the code. define void @test() { ; CHECK-LABEL: @test( ; CHECK-NEXT: [[LOAD0:%.*]] = tail call @llvm.masked.load.nxv16i8.p0nxv16i8(* undef, i32 1, undef, undef) ; CHECK-NEXT: [[LOAD1:%.*]] = tail call @llvm.masked.load.nxv16i8.p0nxv16i8(* undef, i32 1, undef, undef) ; CHECK-NEXT: [[ADD:%.*]] = add [[LOAD1]], [[LOAD0]] ; CHECK-NEXT: tail call void @llvm.masked.store.nxv16i8.p0nxv16i8( [[ADD]], * undef, i32 1, undef) ; CHECK-NEXT: ret void ; %load0 = tail call @llvm.masked.load.nxv16i8.p0nxv16i8( *undef, i32 1, undef, undef) %load1 = tail call @llvm.masked.load.nxv16i8.p0nxv16i8( *undef, i32 1, undef, undef) %add = add %load1, %load0 tail call void @llvm.masked.store.nxv16i8.p0nxv16i8( %add, * undef, i32 1, undef) ret void } define @scalable_phi( %a, i32 %b) { ; CHECK-LABEL: @scalable_phi( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[B:%.*]], 0 ; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[END:%.*]] ; CHECK: if.then: ; CHECK-NEXT: br label [[END]] ; CHECK: end: ; CHECK-NEXT: [[RETVAL:%.*]] = phi [ [[A:%.*]], [[ENTRY:%.*]] ], [ zeroinitializer, [[IF_THEN]] ] ; CHECK-NEXT: ret [[RETVAL]] ; entry: %cmp = icmp eq i32 %b, 0 br i1 %cmp, label %if.then, label %end if.then: br label %end end: %retval = phi [ %a, %entry ], [ zeroinitializer, %if.then ] ret %retval } declare @llvm.masked.load.nxv16i8.p0nxv16i8(*, i32 immarg, , ) declare void @llvm.masked.store.nxv16i8.p0nxv16i8(, *, i32 immarg, )