2021-03-18 05:46:32 +08:00
|
|
|
; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
|
|
|
|
define <vscale x 16 x i1> @vselect_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: vselect_16:
|
|
|
|
; CHECK: sel p0.b, p0, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
|
|
|
%res = select <vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd
|
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @vselect_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: vselect_8:
|
|
|
|
; CHECK: sel p0.b, p0, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
|
|
|
%res = select <vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd
|
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @vselect_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: vselect_4:
|
|
|
|
; CHECK: sel p0.b, p0, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
|
|
|
%res = select <vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd
|
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @vselect_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: vselect_2:
|
|
|
|
; CHECK: sel p0.b, p0, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
|
|
|
%res = select <vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd
|
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @and_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: and_16:
|
|
|
|
; CHECK: and p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.and.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @and_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: and_8:
|
|
|
|
; CHECK: and p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.and.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @and_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: and_4:
|
|
|
|
; CHECK: and p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.and.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @and_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: and_2:
|
|
|
|
; CHECK: and p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.and.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @bic_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: bic_16:
|
|
|
|
; CHECK: bic p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.bic.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @bic_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: bic_8:
|
|
|
|
; CHECK: bic p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.bic.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @bic_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: bic_4:
|
|
|
|
; CHECK: bic p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.bic.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @bic_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: bic_2:
|
|
|
|
; CHECK: bic p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.bic.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @eor_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: eor_16:
|
|
|
|
; CHECK: eor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.eor.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @eor_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: eor_8:
|
|
|
|
; CHECK: eor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.eor.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @eor_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: eor_4:
|
|
|
|
; CHECK: eor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.eor.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @eor_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: eor_2:
|
|
|
|
; CHECK: eor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.eor.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @orr_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orr_16:
|
|
|
|
; CHECK: orr p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.orr.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @orr_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orr_8:
|
|
|
|
; CHECK: orr p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.orr.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @orr_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orr_4:
|
|
|
|
; CHECK: orr p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.orr.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @orr_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orr_2:
|
|
|
|
; CHECK: orr p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.orr.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @orn_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orn_16:
|
|
|
|
; CHECK: orn p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.orn.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @orn_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orn_8:
|
|
|
|
; CHECK: orn p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.orn.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @orn_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orn_4:
|
|
|
|
; CHECK: orn p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.orn.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @orn_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: orn_2:
|
|
|
|
; CHECK: orn p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.orn.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @nor_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nor_16:
|
|
|
|
; CHECK: nor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.nor.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @nor_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nor_8:
|
|
|
|
; CHECK: nor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.nor.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @nor_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nor_4:
|
|
|
|
; CHECK: nor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.nor.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @nor_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nor_2:
|
|
|
|
; CHECK: nor p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.nor.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 16 x i1> @nand_16(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nand_16:
|
|
|
|
; CHECK: nand p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 16 x i1> @llvm.aarch64.sve.nand.z.nxv16i1(<vscale x 16 x i1> %Pg, <vscale x 16 x i1> %Pn, <vscale x 16 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 16 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 8 x i1> @nand_8(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nand_8:
|
|
|
|
; CHECK: nand p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 8 x i1> @llvm.aarch64.sve.nand.z.nxv8i1(<vscale x 8 x i1> %Pg, <vscale x 8 x i1> %Pn, <vscale x 8 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 8 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 4 x i1> @nand_4(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nand_4:
|
|
|
|
; CHECK: nand p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 4 x i1> @llvm.aarch64.sve.nand.z.nxv4i1(<vscale x 4 x i1> %Pg, <vscale x 4 x i1> %Pn, <vscale x 4 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 4 x i1> %res;
|
|
|
|
}
|
|
|
|
|
|
|
|
define <vscale x 2 x i1> @nand_2(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd) {
|
|
|
|
; CHECK-LABEL: nand_2:
|
|
|
|
; CHECK: nand p0.b, p0/z, p1.b, p2.b
|
|
|
|
; CHECK-NEXT: ret
|
2019-12-19 21:34:37 +08:00
|
|
|
%res = call <vscale x 2 x i1> @llvm.aarch64.sve.nand.z.nxv2i1(<vscale x 2 x i1> %Pg, <vscale x 2 x i1> %Pn, <vscale x 2 x i1> %Pd)
|
[AArch64][SVE] Add intrinsics and patterns for logical predicate instructions
Add instrinics and patters for the following logical predicate instructions:
-- and, ands, bic, bics, eor, eors
-- sel
-- orr, orrs, orn, orns, nor, nors, nand, nads
2019-12-05 10:45:59 +08:00
|
|
|
ret <vscale x 2 x i1> %res;
|
|
|
|
}
|
|
|
|
|
2019-12-19 21:34:37 +08:00
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.and.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.and.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.and.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.and.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.bic.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.bic.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.bic.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.bic.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.eor.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.eor.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.eor.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.eor.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.orr.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.orr.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.orr.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.orr.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.orn.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.orn.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.orn.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.orn.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.nor.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.nor.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.nor.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.nor.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|
|
|
|
declare <vscale x 16 x i1> @llvm.aarch64.sve.nand.z.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)
|
|
|
|
declare <vscale x 8 x i1> @llvm.aarch64.sve.nand.z.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>)
|
|
|
|
declare <vscale x 4 x i1> @llvm.aarch64.sve.nand.z.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>)
|
|
|
|
declare <vscale x 2 x i1> @llvm.aarch64.sve.nand.z.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>)
|