xref: /llvm-project/llvm/test/CodeGen/AArch64/sve-intrinsics-pred-testing.ll (revision 62baf21daa377c4ec1a641b26931063c1117d262)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -force-streaming < %s | FileCheck %s
4
5;
6; PTEST
7;
8
9define i1 @ptest_any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
10; CHECK-LABEL: ptest_any:
11; CHECK:       // %bb.0:
12; CHECK-NEXT:    ptest p0, p1.b
13; CHECK-NEXT:    cset w0, ne
14; CHECK-NEXT:    ret
15  %out = call i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
16  ret i1 %out
17}
18
19define i1 @ptest_first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
20; CHECK-LABEL: ptest_first:
21; CHECK:       // %bb.0:
22; CHECK-NEXT:    ptest p0, p1.b
23; CHECK-NEXT:    cset w0, mi
24; CHECK-NEXT:    ret
25  %out = call i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
26  ret i1 %out
27}
28
29define i1 @ptest_last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
30; CHECK-LABEL: ptest_last:
31; CHECK:       // %bb.0:
32; CHECK-NEXT:    ptest p0, p1.b
33; CHECK-NEXT:    cset w0, lo
34; CHECK-NEXT:    ret
35  %out = call i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
36  ret i1 %out
37}
38
39declare i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
40declare i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
41declare i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
42