diff --git a/llvm/test/Transforms/InstCombine/AArch64/sve-intrinsics-ptest.ll b/llvm/test/Transforms/InstCombine/AArch64/sve-intrinsics-ptest.ll index 18e334fe7f0f..aaf7e712f52c 100644 --- a/llvm/test/Transforms/InstCombine/AArch64/sve-intrinsics-ptest.ll +++ b/llvm/test/Transforms/InstCombine/AArch64/sve-intrinsics-ptest.ll @@ -1,13 +1,14 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -passes=instcombine < %s | FileCheck %s target triple = "aarch64-unknown-linux-gnu" define i1 @ptest_any1( %a) #0 { -; CHECK-LABEL: ptest_any1 -; CHECK: %mask = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 0) -; CHECK-NOT: convert -; CHECK-NEXT: %[[OUT:.*]] = call i1 @llvm.aarch64.sve.ptest.any.nxv2i1( %mask, %a) -; CHECK-NEXT: ret i1 %[[OUT]] +; CHECK-LABEL: @ptest_any1( +; CHECK-NEXT: [[MASK:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 0) +; CHECK-NEXT: [[OUT:%.*]] = call i1 @llvm.aarch64.sve.ptest.any.nxv2i1( [[MASK]], [[A:%.*]]) +; CHECK-NEXT: ret i1 [[OUT]] +; %mask = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 0) %1 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( %mask) %2 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( %a) @@ -17,11 +18,13 @@ define i1 @ptest_any1( %a) #0 { ; No transform because the ptest is using differently sized operands. define i1 @ptest_any2( %a) #0 { -; CHECK-LABEL: ptest_any2 -; CHECK: %mask = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) -; CHECK-NEXT: %1 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( %mask) -; CHECK-NEXT: %2 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( %a) -; CHECK-NEXT: %out = call i1 @llvm.aarch64.sve.ptest.any.nxv16i1( %1, %2) +; CHECK-LABEL: @ptest_any2( +; CHECK-NEXT: [[MASK:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) +; CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( [[MASK]]) +; CHECK-NEXT: [[TMP2:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( [[A:%.*]]) +; CHECK-NEXT: [[OUT:%.*]] = call i1 @llvm.aarch64.sve.ptest.any.nxv16i1( [[TMP1]], [[TMP2]]) +; CHECK-NEXT: ret i1 [[OUT]] +; %mask = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %1 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( %mask) %2 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( %a) @@ -30,11 +33,11 @@ define i1 @ptest_any2( %a) #0 { } define i1 @ptest_first( %a) #0 { -; CHECK-LABEL: ptest_first -; CHECK: %mask = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 0) -; CHECK-NOT: convert -; CHECK-NEXT: %[[OUT:.*]] = call i1 @llvm.aarch64.sve.ptest.first.nxv4i1( %mask, %a) -; CHECK-NEXT: ret i1 %[[OUT]] +; CHECK-LABEL: @ptest_first( +; CHECK-NEXT: [[MASK:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 0) +; CHECK-NEXT: [[OUT:%.*]] = call i1 @llvm.aarch64.sve.ptest.first.nxv4i1( [[MASK]], [[A:%.*]]) +; CHECK-NEXT: ret i1 [[OUT]] +; %mask = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 0) %1 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( %mask) %2 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( %a) @@ -43,21 +46,21 @@ define i1 @ptest_first( %a) #0 { } define i1 @ptest_first_same_ops( %a) #0 { -; CHECK-LABEL: ptest_first_same_ops -; CHECK: %[[OUT:.*]] = call i1 @llvm.aarch64.sve.ptest.first.nxv2i1( %a, %a) -; CHECK-NOT: convert -; CHECK-NEXT: ret i1 %[[OUT]] +; CHECK-LABEL: @ptest_first_same_ops( +; CHECK-NEXT: [[TMP1:%.*]] = call i1 @llvm.aarch64.sve.ptest.first.nxv2i1( [[A:%.*]], [[A]]) +; CHECK-NEXT: ret i1 [[TMP1]] +; %1 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( %a) %2 = tail call i1 @llvm.aarch64.sve.ptest.first.nxv16i1( %1, %1) ret i1 %2 } define i1 @ptest_last( %a) #0 { -; CHECK-LABEL: ptest_last -; CHECK: %mask = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 0) -; CHECK-NOT: convert -; CHECK-NEXT: %[[OUT:.*]] = call i1 @llvm.aarch64.sve.ptest.last.nxv8i1( %mask, %a) -; CHECK-NEXT: ret i1 %[[OUT]] +; CHECK-LABEL: @ptest_last( +; CHECK-NEXT: [[MASK:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 0) +; CHECK-NEXT: [[OUT:%.*]] = call i1 @llvm.aarch64.sve.ptest.last.nxv8i1( [[MASK]], [[A:%.*]]) +; CHECK-NEXT: ret i1 [[OUT]] +; %mask = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 0) %1 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv8i1( %mask) %2 = tail call @llvm.aarch64.sve.convert.to.svbool.nxv8i1( %a)