diff options
Diffstat (limited to 'llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll')
-rw-r--r-- | llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll b/llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll new file mode 100644 index 00000000000..03093851c50 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll @@ -0,0 +1,36 @@ +; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s + +; +; PTEST +; + +define i1 @ptest_any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) { +; CHECK-LABEL: ptest_any: +; CHECK: ptest p0, p1.b +; CHECK-NEXT: cset w0, ne +; CHECK-NEXT: ret + %out = call i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) + ret i1 %out +} + +define i1 @ptest_first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) { +; CHECK-LABEL: ptest_first: +; CHECK: ptest p0, p1.b +; CHECK-NEXT: cset w0, mi +; CHECK-NEXT: ret + %out = call i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) + ret i1 %out +} + +define i1 @ptest_last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) { +; CHECK-LABEL: ptest_last: +; CHECK: ptest p0, p1.b +; CHECK-NEXT: cset w0, lo +; CHECK-NEXT: ret + %out = call i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) + ret i1 %out +} + +declare i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) +declare i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) +declare i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) |