[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
|
|
|
|
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
|
2021-07-30 15:30:45 +08:00
|
|
|
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+streaming-sve < %s \
|
|
|
|
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
|
|
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
|
|
|
|
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
|
2020-03-16 07:17:52 +08:00
|
|
|
// RUN: | llvm-objdump -d --mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
|
|
|
|
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
|
|
|
|
|
|
|
|
bic z5.b, z5.b, #0xf9
|
|
|
|
// CHECK-INST: and z5.b, z5.b, #0x6
|
|
|
|
// CHECK-ENCODING: [0x25,0x3e,0x80,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: 25 3e 80 05 <unknown>
|
|
|
|
|
|
|
|
bic z23.h, z23.h, #0xfff9
|
|
|
|
// CHECK-INST: and z23.h, z23.h, #0x6
|
|
|
|
// CHECK-ENCODING: [0x37,0x7c,0x80,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: 37 7c 80 05 <unknown>
|
|
|
|
|
|
|
|
bic z0.s, z0.s, #0xfffffff9
|
|
|
|
// CHECK-INST: and z0.s, z0.s, #0x6
|
|
|
|
// CHECK-ENCODING: [0x20,0xf8,0x80,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: 20 f8 80 05 <unknown>
|
|
|
|
|
|
|
|
bic z0.d, z0.d, #0xfffffffffffffff9
|
|
|
|
// CHECK-INST: and z0.d, z0.d, #0x6
|
|
|
|
// CHECK-ENCODING: [0x20,0xf8,0x83,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: 20 f8 83 05 <unknown>
|
|
|
|
|
|
|
|
bic z5.b, z5.b, #0x6
|
|
|
|
// CHECK-INST: and z5.b, z5.b, #0xf9
|
|
|
|
// CHECK-ENCODING: [0xa5,0x2e,0x80,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: a5 2e 80 05 <unknown>
|
|
|
|
|
|
|
|
bic z23.h, z23.h, #0x6
|
|
|
|
// CHECK-INST: and z23.h, z23.h, #0xfff9
|
|
|
|
// CHECK-ENCODING: [0xb7,0x6d,0x80,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: b7 6d 80 05 <unknown>
|
|
|
|
|
|
|
|
bic z0.s, z0.s, #0x6
|
|
|
|
// CHECK-INST: and z0.s, z0.s, #0xfffffff9
|
|
|
|
// CHECK-ENCODING: [0xa0,0xeb,0x80,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: a0 eb 80 05 <unknown>
|
|
|
|
|
|
|
|
bic z0.d, z0.d, #0x6
|
|
|
|
// CHECK-INST: and z0.d, z0.d, #0xfffffffffffffff9
|
|
|
|
// CHECK-ENCODING: [0xa0,0xef,0x83,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: a0 ef 83 05 <unknown>
|
|
|
|
|
|
|
|
bic z0.d, z0.d, z0.d
|
|
|
|
// CHECK-INST: bic z0.d, z0.d, z0.d
|
|
|
|
// CHECK-ENCODING: [0x00,0x30,0xe0,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: 00 30 e0 04 <unknown>
|
|
|
|
|
|
|
|
bic z23.d, z13.d, z8.d
|
|
|
|
// CHECK-INST: bic z23.d, z13.d, z8.d
|
|
|
|
// CHECK-ENCODING: [0xb7,0x31,0xe8,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: b7 31 e8 04 <unknown>
|
|
|
|
|
|
|
|
bic z31.b, p7/m, z31.b, z31.b
|
|
|
|
// CHECK-INST: bic z31.b, p7/m, z31.b, z31.b
|
|
|
|
// CHECK-ENCODING: [0xff,0x1f,0x1b,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: ff 1f 1b 04 <unknown>
|
|
|
|
|
|
|
|
bic z31.h, p7/m, z31.h, z31.h
|
|
|
|
// CHECK-INST: bic z31.h, p7/m, z31.h, z31.h
|
|
|
|
// CHECK-ENCODING: [0xff,0x1f,0x5b,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: ff 1f 5b 04 <unknown>
|
|
|
|
|
|
|
|
bic z31.s, p7/m, z31.s, z31.s
|
|
|
|
// CHECK-INST: bic z31.s, p7/m, z31.s, z31.s
|
|
|
|
// CHECK-ENCODING: [0xff,0x1f,0x9b,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: ff 1f 9b 04 <unknown>
|
|
|
|
|
|
|
|
bic z31.d, p7/m, z31.d, z31.d
|
|
|
|
// CHECK-INST: bic z31.d, p7/m, z31.d, z31.d
|
|
|
|
// CHECK-ENCODING: [0xff,0x1f,0xdb,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for AND, ORR, EOR and BIC instructions.
This patch addresses the following variants:
- bitmask immediate, e.g. 'and z0.d, z0.d, #0x6'.
- unpredicated data vectors, e.g. 'and z0.d, z1.d, z2.d'.
- predicated data vectors, e.g. 'and z0.d, p0/m, z0.d, z1.d'.
And also several aliases, such as:
- ORN, alias of ORR.
- EON, alias of EOR.
- BIC, alias of AND (immediate variant)
- MOV, alias of ORR (if unpredicated and source register operands are the same)
Reviewers: rengolin, huntergr, fhahn, samparker, SjoerdMeijer, javed.absar
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D47363
llvm-svn: 333414
2018-05-29 21:08:43 +08:00
|
|
|
// CHECK-UNKNOWN: ff 1f db 04 <unknown>
|
[AArch64][SVE] Asm: Support for bitwise operations on predicate vectors.
This patch adds support for instructions performing bitwise operations
on predicate vectors, including AND, BIC, EOR, NAND, NOR, ORN, ORR, and
their status flag setting variants ANDS, BICS, EORS, NANDS, ORNS, ORRS.
This patch also adds several aliases:
orr p0.b, p1/z, p1.b, p1.b => mov p0.b, p1.b
orrs p0.b, p1/z, p1.b, p1.b => movs p0.b, p1.b
and p0.b, p1/z, p2.b, p2.b => mov p0.b, p1/z, p2.b
ands p0.b, p1/z, p2.b, p2.b => movs p0.b, p1/z, p2.b
eor p0.b, p1/z, p2.b, p1.b => not p0.b, p1/z, p2.b
eors p0.b, p1/z, p2.b, p1.b => nots p0.b, p1/z, p2.b
llvm-svn: 334906
2018-06-17 18:48:21 +08:00
|
|
|
|
|
|
|
bic p15.b, p15/z, p15.b, p15.b
|
|
|
|
// CHECK-INST: bic p15.b, p15/z, p15.b, p15.b
|
|
|
|
// CHECK-ENCODING: [0xff,0x7d,0x0f,0x25]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for bitwise operations on predicate vectors.
This patch adds support for instructions performing bitwise operations
on predicate vectors, including AND, BIC, EOR, NAND, NOR, ORN, ORR, and
their status flag setting variants ANDS, BICS, EORS, NANDS, ORNS, ORRS.
This patch also adds several aliases:
orr p0.b, p1/z, p1.b, p1.b => mov p0.b, p1.b
orrs p0.b, p1/z, p1.b, p1.b => movs p0.b, p1.b
and p0.b, p1/z, p2.b, p2.b => mov p0.b, p1/z, p2.b
ands p0.b, p1/z, p2.b, p2.b => movs p0.b, p1/z, p2.b
eor p0.b, p1/z, p2.b, p1.b => not p0.b, p1/z, p2.b
eors p0.b, p1/z, p2.b, p1.b => nots p0.b, p1/z, p2.b
llvm-svn: 334906
2018-06-17 18:48:21 +08:00
|
|
|
// CHECK-UNKNOWN: ff 7d 0f 25 <unknown>
|
|
|
|
|
|
|
|
bic p0.b, p0/z, p0.b, p0.b
|
|
|
|
// CHECK-INST: bic p0.b, p0/z, p0.b, p0.b
|
|
|
|
// CHECK-ENCODING: [0x10,0x40,0x00,0x25]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
[AArch64][SVE] Asm: Support for bitwise operations on predicate vectors.
This patch adds support for instructions performing bitwise operations
on predicate vectors, including AND, BIC, EOR, NAND, NOR, ORN, ORR, and
their status flag setting variants ANDS, BICS, EORS, NANDS, ORNS, ORRS.
This patch also adds several aliases:
orr p0.b, p1/z, p1.b, p1.b => mov p0.b, p1.b
orrs p0.b, p1/z, p1.b, p1.b => movs p0.b, p1.b
and p0.b, p1/z, p2.b, p2.b => mov p0.b, p1/z, p2.b
ands p0.b, p1/z, p2.b, p2.b => movs p0.b, p1/z, p2.b
eor p0.b, p1/z, p2.b, p1.b => not p0.b, p1/z, p2.b
eors p0.b, p1/z, p2.b, p1.b => nots p0.b, p1/z, p2.b
llvm-svn: 334906
2018-06-17 18:48:21 +08:00
|
|
|
// CHECK-UNKNOWN: 10 40 00 25 <unknown>
|
2018-07-31 00:05:45 +08:00
|
|
|
|
|
|
|
|
2019-04-29 23:27:27 +08:00
|
|
|
// --------------------------------------------------------------------------//
|
|
|
|
// Test aliases.
|
|
|
|
|
|
|
|
bic z0.s, z0.s, z0.s
|
|
|
|
// CHECK-INST: bic z0.d, z0.d, z0.d
|
|
|
|
// CHECK-ENCODING: [0x00,0x30,0xe0,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2019-04-29 23:27:27 +08:00
|
|
|
// CHECK-UNKNOWN: 00 30 e0 04 <unknown>
|
|
|
|
|
|
|
|
bic z0.h, z0.h, z0.h
|
|
|
|
// CHECK-INST: bic z0.d, z0.d, z0.d
|
|
|
|
// CHECK-ENCODING: [0x00,0x30,0xe0,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2019-04-29 23:27:27 +08:00
|
|
|
// CHECK-UNKNOWN: 00 30 e0 04 <unknown>
|
|
|
|
|
|
|
|
bic z0.b, z0.b, z0.b
|
|
|
|
// CHECK-INST: bic z0.d, z0.d, z0.d
|
|
|
|
// CHECK-ENCODING: [0x00,0x30,0xe0,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2019-04-29 23:27:27 +08:00
|
|
|
// CHECK-UNKNOWN: 00 30 e0 04 <unknown>
|
|
|
|
|
|
|
|
|
2018-07-31 00:05:45 +08:00
|
|
|
// --------------------------------------------------------------------------//
|
|
|
|
// Test compatibility with MOVPRFX instruction.
|
|
|
|
|
|
|
|
movprfx z4.d, p7/z, z6.d
|
|
|
|
// CHECK-INST: movprfx z4.d, p7/z, z6.d
|
|
|
|
// CHECK-ENCODING: [0xc4,0x3c,0xd0,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2018-07-31 00:05:45 +08:00
|
|
|
// CHECK-UNKNOWN: c4 3c d0 04 <unknown>
|
|
|
|
|
|
|
|
bic z4.d, p7/m, z4.d, z31.d
|
|
|
|
// CHECK-INST: bic z4.d, p7/m, z4.d, z31.d
|
|
|
|
// CHECK-ENCODING: [0xe4,0x1f,0xdb,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2018-07-31 00:05:45 +08:00
|
|
|
// CHECK-UNKNOWN: e4 1f db 04 <unknown>
|
|
|
|
|
|
|
|
movprfx z4, z6
|
|
|
|
// CHECK-INST: movprfx z4, z6
|
|
|
|
// CHECK-ENCODING: [0xc4,0xbc,0x20,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2018-07-31 00:05:45 +08:00
|
|
|
// CHECK-UNKNOWN: c4 bc 20 04 <unknown>
|
|
|
|
|
|
|
|
bic z4.d, p7/m, z4.d, z31.d
|
|
|
|
// CHECK-INST: bic z4.d, p7/m, z4.d, z31.d
|
|
|
|
// CHECK-ENCODING: [0xe4,0x1f,0xdb,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2018-07-31 00:05:45 +08:00
|
|
|
// CHECK-UNKNOWN: e4 1f db 04 <unknown>
|
|
|
|
|
|
|
|
movprfx z0, z7
|
|
|
|
// CHECK-INST: movprfx z0, z7
|
|
|
|
// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2018-07-31 00:05:45 +08:00
|
|
|
// CHECK-UNKNOWN: e0 bc 20 04 <unknown>
|
|
|
|
|
|
|
|
bic z0.d, z0.d, #0x6
|
|
|
|
// CHECK-INST: and z0.d, z0.d, #0xfffffffffffffff9
|
|
|
|
// CHECK-ENCODING: [0xa0,0xef,0x83,0x05]
|
2021-07-30 15:30:45 +08:00
|
|
|
// CHECK-ERROR: instruction requires: streaming-sve or sve
|
2018-07-31 00:05:45 +08:00
|
|
|
// CHECK-UNKNOWN: a0 ef 83 05 <unknown>
|