1; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s 2>%t | FileCheck %s
2; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t
3
4; If this check fails please read test/CodeGen/AArch64/README for instructions on how to resolve it.
5; WARN-NOT: warning
6
7;
8; PTEST
9;
10
11define i1 @ptest_any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
12; CHECK-LABEL: ptest_any:
13; CHECK: ptest p0, p1.b
14; CHECK-NEXT: cset w0, ne
15; CHECK-NEXT: ret
16  %out = call i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
17  ret i1 %out
18}
19
20define i1 @ptest_first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
21; CHECK-LABEL: ptest_first:
22; CHECK: 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: ptest p0, p1.b
32; CHECK-NEXT: cset w0, lo
33; CHECK-NEXT: ret
34  %out = call i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
35  ret i1 %out
36}
37
38declare i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
39declare i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
40declare i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
41