Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit a06d966

Browse files
committed
[AArch64][SVE] Asm: Support for FP Complex ADD/MLA.
The variants added in this patch are: - Predicated Complex floating point ADD with rotate, e.g. fcadd z0.h, p0/m, z0.h, z1.h, #90 - Predicated Complex floating point MLA with rotate, e.g. fcmla z0.h, p0/m, z1.h, z2.h, #180 - Unpredicated Complex floating point MLA with rotate (indexed operand), e.g. fcmla z0.h, p0/m, z1.h, z2.h[0], #180 Reviewers: rengolin, fhahn, SjoerdMeijer, samparker, javed.absar Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D48824 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336210 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent ebcc092 commit a06d966

File tree

7 files changed

+351
-4
lines changed

7 files changed

+351
-4
lines changed

lib/Target/AArch64/AArch64SVEInstrInfo.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ let Predicates = [HasSVE] in {
5656
defm FMUL_ZPmI : sve_fp_2op_i_p_zds<0b010, "fmul", sve_fpimm_half_two>;
5757
defm FMAX_ZPmI : sve_fp_2op_i_p_zds<0b110, "fmax", sve_fpimm_zero_one>;
5858

59+
defm FCADD_ZPmZ : sve_fp_fcadd<"fcadd">;
60+
defm FCMLA_ZPmZZ : sve_fp_fcmla<"fcmla">;
5961

62+
defm FCMLA_ZZZI : sve_fp_fcmla_by_indexed_elem<"fcmla">;
6063
defm FMUL_ZZZI : sve_fp_fmul_by_indexed_elem<"fmul">;
6164

6265
// Splat immediate (unpredicated)

lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,14 +1044,16 @@ class AArch64Operand : public MCParsedAsmOperand {
10441044
}
10451045

10461046
template<int64_t Angle, int64_t Remainder>
1047-
bool isComplexRotation() const {
1048-
if (!isImm()) return false;
1047+
DiagnosticPredicate isComplexRotation() const {
1048+
if (!isImm()) return DiagnosticPredicateTy::NoMatch;
10491049

10501050
const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
1051-
if (!CE) return false;
1051+
if (!CE) return DiagnosticPredicateTy::NoMatch;
10521052
uint64_t Value = CE->getValue();
10531053

1054-
return (Value % Angle == Remainder && Value <= 270);
1054+
if (Value % Angle == Remainder && Value <= 270)
1055+
return DiagnosticPredicateTy::Match;
1056+
return DiagnosticPredicateTy::NearMatch;
10551057
}
10561058

10571059
template <unsigned RegClassID> bool isGPR64() const {

lib/Target/AArch64/SVEInstrFormats.td

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,111 @@ multiclass sve_fp_fmul_by_indexed_elem<string asm> {
821821
}
822822
}
823823

824+
//===----------------------------------------------------------------------===//
825+
// SVE Floating Point Complex Multiply-Add Group
826+
//===----------------------------------------------------------------------===//
827+
828+
class sve_fp_fcmla<bits<2> sz, string asm, ZPRRegOp zprty>
829+
: I<(outs zprty:$Zda), (ins PPR3bAny:$Pg, zprty:$_Zda, zprty:$Zn, zprty:$Zm,
830+
complexrotateop:$imm),
831+
asm, "\t$Zda, $Pg/m, $Zn, $Zm, $imm",
832+
"", []>, Sched<[]> {
833+
bits<5> Zda;
834+
bits<3> Pg;
835+
bits<5> Zn;
836+
bits<5> Zm;
837+
bits<2> imm;
838+
let Inst{31-24} = 0b01100100;
839+
let Inst{23-22} = sz;
840+
let Inst{21} = 0;
841+
let Inst{20-16} = Zm;
842+
let Inst{15} = 0;
843+
let Inst{14-13} = imm;
844+
let Inst{12-10} = Pg;
845+
let Inst{9-5} = Zn;
846+
let Inst{4-0} = Zda;
847+
848+
let Constraints = "$Zda = $_Zda";
849+
}
850+
851+
multiclass sve_fp_fcmla<string asm> {
852+
def _H : sve_fp_fcmla<0b01, asm, ZPR16>;
853+
def _S : sve_fp_fcmla<0b10, asm, ZPR32>;
854+
def _D : sve_fp_fcmla<0b11, asm, ZPR64>;
855+
}
856+
857+
//===----------------------------------------------------------------------===//
858+
// SVE Floating Point Complex Multiply-Add - Indexed Group
859+
//===----------------------------------------------------------------------===//
860+
861+
class sve_fp_fcmla_by_indexed_elem<bits<2> sz, string asm,
862+
ZPRRegOp zprty,
863+
ZPRRegOp zprty2, Operand itype>
864+
: I<(outs zprty:$Zda), (ins zprty:$_Zda, zprty:$Zn, zprty2:$Zm, itype:$iop,
865+
complexrotateop:$imm),
866+
asm, "\t$Zda, $Zn, $Zm$iop, $imm",
867+
"", []>, Sched<[]> {
868+
bits<5> Zda;
869+
bits<5> Zn;
870+
bits<2> imm;
871+
let Inst{31-24} = 0b01100100;
872+
let Inst{23-22} = sz;
873+
let Inst{21} = 0b1;
874+
let Inst{15-12} = 0b0001;
875+
let Inst{11-10} = imm;
876+
let Inst{9-5} = Zn;
877+
let Inst{4-0} = Zda;
878+
879+
let Constraints = "$Zda = $_Zda";
880+
}
881+
882+
multiclass sve_fp_fcmla_by_indexed_elem<string asm> {
883+
def _H : sve_fp_fcmla_by_indexed_elem<0b10, asm, ZPR16, ZPR3b16, VectorIndexS> {
884+
bits<3> Zm;
885+
bits<2> iop;
886+
let Inst{20-19} = iop;
887+
let Inst{18-16} = Zm;
888+
}
889+
def _S : sve_fp_fcmla_by_indexed_elem<0b11, asm, ZPR32, ZPR4b32, VectorIndexD> {
890+
bits<4> Zm;
891+
bits<1> iop;
892+
let Inst{20} = iop;
893+
let Inst{19-16} = Zm;
894+
}
895+
}
896+
897+
//===----------------------------------------------------------------------===//
898+
// SVE Floating Point Complex Addition Group
899+
//===----------------------------------------------------------------------===//
900+
901+
class sve_fp_fcadd<bits<2> sz, string asm, ZPRRegOp zprty>
902+
: I<(outs zprty:$Zdn), (ins PPR3bAny:$Pg, zprty:$_Zdn, zprty:$Zm,
903+
complexrotateopodd:$imm),
904+
asm, "\t$Zdn, $Pg/m, $_Zdn, $Zm, $imm",
905+
"",
906+
[]>, Sched<[]> {
907+
bits<5> Zdn;
908+
bits<5> Zm;
909+
bits<3> Pg;
910+
bit imm;
911+
let Inst{31-24} = 0b01100100;
912+
let Inst{23-22} = sz;
913+
let Inst{21-17} = 0;
914+
let Inst{16} = imm;
915+
let Inst{15-13} = 0b100;
916+
let Inst{12-10} = Pg;
917+
let Inst{9-5} = Zm;
918+
let Inst{4-0} = Zdn;
919+
920+
let Constraints = "$Zdn = $_Zdn";
921+
}
922+
923+
multiclass sve_fp_fcadd<string asm> {
924+
def _H : sve_fp_fcadd<0b01, asm, ZPR16>;
925+
def _S : sve_fp_fcadd<0b10, asm, ZPR32>;
926+
def _D : sve_fp_fcadd<0b11, asm, ZPR64>;
927+
}
928+
824929
//===----------------------------------------------------------------------===//
825930
// SVE Stack Allocation Group
826931
//===----------------------------------------------------------------------===//
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
2+
3+
// --------------------------------------------------------------------------//
4+
// Source and Destination Registers must match
5+
6+
fcadd z0.d, p2/m, z1.d, z2.d, #90
7+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register
8+
// CHECK-NEXT: fcadd z0.d, p2/m, z1.d, z2.d, #90
9+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10+
11+
12+
// --------------------------------------------------------------------------//
13+
// Restricted predicate out of range.
14+
15+
fcadd z0.d, p8/m, z0.d, z1.d, #90
16+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
17+
// CHECK-NEXT: fcadd z0.d, p8/m, z0.d, z1.d, #90
18+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
19+
20+
21+
// --------------------------------------------------------------------------//
22+
// Invalid rotation
23+
24+
fcadd z0.d, p0/m, z0.d, z1.d, #0
25+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: complex rotation must be 90 or 270.
26+
// CHECK-NEXT: fcadd z0.d, p0/m, z0.d, z1.d, #0
27+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
28+
29+
fcadd z0.d, p0/m, z0.d, z1.d, #180
30+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: complex rotation must be 90 or 270.
31+
// CHECK-NEXT: fcadd z0.d, p0/m, z0.d, z1.d, #180
32+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
33+
34+
fcadd z0.d, p0/m, z0.d, z1.d, #450
35+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: complex rotation must be 90 or 270.
36+
// CHECK-NEXT: fcadd z0.d, p0/m, z0.d, z1.d, #450
37+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

test/MC/AArch64/SVE/fcadd.s

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
2+
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
4+
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
5+
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
6+
// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
7+
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
8+
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9+
10+
fcadd z0.h, p0/m, z0.h, z0.h, #90
11+
// CHECK-INST: fcadd z0.h, p0/m, z0.h, z0.h, #90
12+
// CHECK-ENCODING: [0x00,0x80,0x40,0x64]
13+
// CHECK-ERROR: instruction requires: sve
14+
// CHECK-UNKNOWN: 00 80 40 64 <unknown>
15+
16+
fcadd z0.s, p0/m, z0.s, z0.s, #90
17+
// CHECK-INST: fcadd z0.s, p0/m, z0.s, z0.s, #90
18+
// CHECK-ENCODING: [0x00,0x80,0x80,0x64]
19+
// CHECK-ERROR: instruction requires: sve
20+
// CHECK-UNKNOWN: 00 80 80 64 <unknown>
21+
22+
fcadd z0.d, p0/m, z0.d, z0.d, #90
23+
// CHECK-INST: fcadd z0.d, p0/m, z0.d, z0.d, #90
24+
// CHECK-ENCODING: [0x00,0x80,0xc0,0x64]
25+
// CHECK-ERROR: instruction requires: sve
26+
// CHECK-UNKNOWN: 00 80 c0 64 <unknown>
27+
28+
fcadd z31.h, p7/m, z31.h, z31.h, #270
29+
// CHECK-INST: fcadd z31.h, p7/m, z31.h, z31.h, #270
30+
// CHECK-ENCODING: [0xff,0x9f,0x41,0x64]
31+
// CHECK-ERROR: instruction requires: sve
32+
// CHECK-UNKNOWN: ff 9f 41 64 <unknown>
33+
34+
fcadd z31.s, p7/m, z31.s, z31.s, #270
35+
// CHECK-INST: fcadd z31.s, p7/m, z31.s, z31.s, #270
36+
// CHECK-ENCODING: [0xff,0x9f,0x81,0x64]
37+
// CHECK-ERROR: instruction requires: sve
38+
// CHECK-UNKNOWN: ff 9f 81 64 <unknown>
39+
40+
fcadd z31.d, p7/m, z31.d, z31.d, #270
41+
// CHECK-INST: fcadd z31.d, p7/m, z31.d, z31.d, #270
42+
// CHECK-ENCODING: [0xff,0x9f,0xc1,0x64]
43+
// CHECK-ERROR: instruction requires: sve
44+
// CHECK-UNKNOWN: ff 9f c1 64 <unknown>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
2+
3+
// --------------------------------------------------------------------------//
4+
// Restricted predicate out of range.
5+
6+
fcmla z0.d, p8/m, z1.d, z2.d, #0
7+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
8+
// CHECK-NEXT: fcmla z0.d, p8/m, z1.d, z2.d, #0
9+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10+
11+
12+
// --------------------------------------------------------------------------//
13+
// Invalid rotation
14+
15+
fcmla z0.d, p0/m, z1.d, z2.d, #360
16+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: complex rotation must be 0, 90, 180 or 270.
17+
// CHECK-NEXT: fcmla z0.d, p0/m, z1.d, z2.d, #360
18+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
19+
20+
fcmla z0.d, p0/m, z1.d, z2.d, #450
21+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: complex rotation must be 0, 90, 180 or 270.
22+
// CHECK-NEXT: fcmla z0.d, p0/m, z1.d, z2.d, #450
23+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
24+
25+
26+
// --------------------------------------------------------------------------//
27+
// Index out of bounds or invalid for element size
28+
29+
fcmla z0.h, z1.h, z2.h[-1], #0
30+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].
31+
// CHECK-NEXT: fcmla z0.h, z1.h, z2.h[-1], #0
32+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
33+
34+
fcmla z0.h, z1.h, z2.h[4], #0
35+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].
36+
// CHECK-NEXT: fcmla z0.h, z1.h, z2.h[4], #0
37+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
38+
39+
fcmla z0.s, z1.s, z2.s[-1], #0
40+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].
41+
// CHECK-NEXT: fcmla z0.s, z1.s, z2.s[-1], #0
42+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
43+
44+
fcmla z0.s, z1.s, z2.s[2], #0
45+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].
46+
// CHECK-NEXT: fcmla z0.s, z1.s, z2.s[2], #0
47+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
48+
49+
fcmla z0.d, z1.d, z2.d[0], #0
50+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
51+
// CHECK-NEXT: fcmla z0.d, z1.d, z2.d[0], #0
52+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

test/MC/AArch64/SVE/fcmla.s

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
2+
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
4+
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
5+
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
6+
// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
7+
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
8+
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9+
10+
fcmla z0.h, p0/m, z0.h, z0.h, #0
11+
// CHECK-INST: fcmla z0.h, p0/m, z0.h, z0.h, #0
12+
// CHECK-ENCODING: [0x00,0x00,0x40,0x64]
13+
// CHECK-ERROR: instruction requires: sve
14+
// CHECK-UNKNOWN: 00 00 40 64 <unknown>
15+
16+
fcmla z0.s, p0/m, z0.s, z0.s, #0
17+
// CHECK-INST: fcmla z0.s, p0/m, z0.s, z0.s, #0
18+
// CHECK-ENCODING: [0x00,0x00,0x80,0x64]
19+
// CHECK-ERROR: instruction requires: sve
20+
// CHECK-UNKNOWN: 00 00 80 64 <unknown>
21+
22+
fcmla z0.d, p0/m, z0.d, z0.d, #0
23+
// CHECK-INST: fcmla z0.d, p0/m, z0.d, z0.d, #0
24+
// CHECK-ENCODING: [0x00,0x00,0xc0,0x64]
25+
// CHECK-ERROR: instruction requires: sve
26+
// CHECK-UNKNOWN: 00 00 c0 64 <unknown>
27+
28+
fcmla z0.h, p0/m, z1.h, z2.h, #90
29+
// CHECK-INST: fcmla z0.h, p0/m, z1.h, z2.h, #90
30+
// CHECK-ENCODING: [0x20,0x20,0x42,0x64]
31+
// CHECK-ERROR: instruction requires: sve
32+
// CHECK-UNKNOWN: 20 20 42 64 <unknown>
33+
34+
fcmla z0.s, p0/m, z1.s, z2.s, #90
35+
// CHECK-INST: fcmla z0.s, p0/m, z1.s, z2.s, #90
36+
// CHECK-ENCODING: [0x20,0x20,0x82,0x64]
37+
// CHECK-ERROR: instruction requires: sve
38+
// CHECK-UNKNOWN: 20 20 82 64 <unknown>
39+
40+
fcmla z0.d, p0/m, z1.d, z2.d, #90
41+
// CHECK-INST: fcmla z0.d, p0/m, z1.d, z2.d, #90
42+
// CHECK-ENCODING: [0x20,0x20,0xc2,0x64]
43+
// CHECK-ERROR: instruction requires: sve
44+
// CHECK-UNKNOWN: 20 20 c2 64 <unknown>
45+
46+
fcmla z29.h, p7/m, z30.h, z31.h, #180
47+
// CHECK-INST: fcmla z29.h, p7/m, z30.h, z31.h, #180
48+
// CHECK-ENCODING: [0xdd,0x5f,0x5f,0x64]
49+
// CHECK-ERROR: instruction requires: sve
50+
// CHECK-UNKNOWN: dd 5f 5f 64 <unknown>
51+
52+
fcmla z29.s, p7/m, z30.s, z31.s, #180
53+
// CHECK-INST: fcmla z29.s, p7/m, z30.s, z31.s, #180
54+
// CHECK-ENCODING: [0xdd,0x5f,0x9f,0x64]
55+
// CHECK-ERROR: instruction requires: sve
56+
// CHECK-UNKNOWN: dd 5f 9f 64 <unknown>
57+
58+
fcmla z29.d, p7/m, z30.d, z31.d, #180
59+
// CHECK-INST: fcmla z29.d, p7/m, z30.d, z31.d, #180
60+
// CHECK-ENCODING: [0xdd,0x5f,0xdf,0x64]
61+
// CHECK-ERROR: instruction requires: sve
62+
// CHECK-UNKNOWN: dd 5f df 64 <unknown>
63+
64+
fcmla z31.h, p7/m, z31.h, z31.h, #270
65+
// CHECK-INST: fcmla z31.h, p7/m, z31.h, z31.h, #270
66+
// CHECK-ENCODING: [0xff,0x7f,0x5f,0x64]
67+
// CHECK-ERROR: instruction requires: sve
68+
// CHECK-UNKNOWN: ff 7f 5f 64 <unknown>
69+
70+
fcmla z31.s, p7/m, z31.s, z31.s, #270
71+
// CHECK-INST: fcmla z31.s, p7/m, z31.s, z31.s, #270
72+
// CHECK-ENCODING: [0xff,0x7f,0x9f,0x64]
73+
// CHECK-ERROR: instruction requires: sve
74+
// CHECK-UNKNOWN: ff 7f 9f 64 <unknown>
75+
76+
fcmla z31.d, p7/m, z31.d, z31.d, #270
77+
// CHECK-INST: fcmla z31.d, p7/m, z31.d, z31.d, #270
78+
// CHECK-ENCODING: [0xff,0x7f,0xdf,0x64]
79+
// CHECK-ERROR: instruction requires: sve
80+
// CHECK-UNKNOWN: ff 7f df 64 <unknown>
81+
82+
fcmla z0.h, z0.h, z0.h[0], #0
83+
// CHECK-INST: fcmla z0.h, z0.h, z0.h[0], #0
84+
// CHECK-ENCODING: [0x00,0x10,0xa0,0x64]
85+
// CHECK-ERROR: instruction requires: sve
86+
// CHECK-UNKNOWN: 00 10 a0 64 <unknown>
87+
88+
fcmla z23.s, z13.s, z8.s[0], #270
89+
// CHECK-INST: fcmla z23.s, z13.s, z8.s[0], #270
90+
// CHECK-ENCODING: [0xb7,0x1d,0xe8,0x64]
91+
// CHECK-ERROR: instruction requires: sve
92+
// CHECK-UNKNOWN: b7 1d e8 64 <unknown>
93+
94+
fcmla z31.h, z31.h, z7.h[3], #270
95+
// CHECK-INST: fcmla z31.h, z31.h, z7.h[3], #270
96+
// CHECK-ENCODING: [0xff,0x1f,0xbf,0x64]
97+
// CHECK-ERROR: instruction requires: sve
98+
// CHECK-UNKNOWN: ff 1f bf 64 <unknown>
99+
100+
fcmla z21.s, z10.s, z5.s[1], #90
101+
// CHECK-INST: fcmla z21.s, z10.s, z5.s[1], #90
102+
// CHECK-ENCODING: [0x55,0x15,0xf5,0x64]
103+
// CHECK-ERROR: instruction requires: sve
104+
// CHECK-UNKNOWN: 55 15 f5 64 <unknown>

0 commit comments

Comments
 (0)