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

Commit 5431fe0

Browse files
committed
[AArch64][SVE] Asm: Support for predicated FP operations (FP immediate)
This patch completes support for the following floating point instructions that take FP immediates: FADD* (addition) FSUB (subtract) FSUBR (subtract reverse form) FMUL* (multiplication) FMAX* (maximum) FMAXNM (maximum number) FMIN (maximum) FMINNM (maximum number) All operations are predicated and take a FP immediate operand, e.g. fadd z0.h, p0/m, z0.h, #0.5 fmin z0.s, p0/m, z0.s, #1.0 ^___________^ (tied) * Instructions added in a previous patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337272 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 1c105a0 commit 5431fe0

11 files changed

+385
-0
lines changed

lib/Target/AArch64/AArch64SVEInstrInfo.td

+5
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,13 @@ let Predicates = [HasSVE] in {
8282
defm UABD_ZPmZ : sve_int_bin_pred_arit_1<0b101, "uabd">;
8383

8484
defm FADD_ZPmI : sve_fp_2op_i_p_zds<0b000, "fadd", sve_fpimm_half_one>;
85+
defm FSUB_ZPmI : sve_fp_2op_i_p_zds<0b001, "fsub", sve_fpimm_half_one>;
8586
defm FMUL_ZPmI : sve_fp_2op_i_p_zds<0b010, "fmul", sve_fpimm_half_two>;
87+
defm FSUBR_ZPmI : sve_fp_2op_i_p_zds<0b011, "fsubr", sve_fpimm_half_one>;
88+
defm FMAXNM_ZPmI : sve_fp_2op_i_p_zds<0b100, "fmaxnm", sve_fpimm_zero_one>;
89+
defm FMINNM_ZPmI : sve_fp_2op_i_p_zds<0b101, "fminnm", sve_fpimm_zero_one>;
8690
defm FMAX_ZPmI : sve_fp_2op_i_p_zds<0b110, "fmax", sve_fpimm_zero_one>;
91+
defm FMIN_ZPmI : sve_fp_2op_i_p_zds<0b111, "fmin", sve_fpimm_zero_one>;
8792

8893
defm FADD_ZPmZ : sve_fp_2op_p_zds<0b0000, "fadd">;
8994
defm FSUB_ZPmZ : sve_fp_2op_p_zds<0b0001, "fsub">;

test/MC/AArch64/SVE/fmaxnm-diagnostics.s

+28
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
22

3+
// ------------------------------------------------------------------------- //
4+
// Invalid immediates (must be 0.0 or 1.0)
5+
6+
fmaxnm z0.h, p0/m, z0.h, #0.5
7+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
8+
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.5
9+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10+
11+
fmaxnm z0.h, p0/m, z0.h, #-0.0
12+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
13+
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #-0.0
14+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
15+
16+
fmaxnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
17+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
18+
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
19+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
20+
21+
fmaxnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
22+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
23+
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
24+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
25+
26+
fmaxnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
27+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
28+
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
29+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
30+
331

432
// ------------------------------------------------------------------------- //
533
// Tied operands must match

test/MC/AArch64/SVE/fmaxnm.s

+48
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,54 @@
77
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
88
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
99

10+
fmaxnm z0.h, p0/m, z0.h, #0.000000000000000
11+
// CHECK-INST: fmaxnm z0.h, p0/m, z0.h, #0.0
12+
// CHECK-ENCODING: [0x00,0x80,0x5c,0x65]
13+
// CHECK-ERROR: instruction requires: sve
14+
// CHECK-UNKNOWN: 00 80 5c 65 <unknown>
15+
16+
fmaxnm z0.h, p0/m, z0.h, #0.0
17+
// CHECK-INST: fmaxnm z0.h, p0/m, z0.h, #0.0
18+
// CHECK-ENCODING: [0x00,0x80,0x5c,0x65]
19+
// CHECK-ERROR: instruction requires: sve
20+
// CHECK-UNKNOWN: 00 80 5c 65 <unknown>
21+
22+
fmaxnm z0.s, p0/m, z0.s, #0.0
23+
// CHECK-INST: fmaxnm z0.s, p0/m, z0.s, #0.0
24+
// CHECK-ENCODING: [0x00,0x80,0x9c,0x65]
25+
// CHECK-ERROR: instruction requires: sve
26+
// CHECK-UNKNOWN: 00 80 9c 65 <unknown>
27+
28+
fmaxnm z0.d, p0/m, z0.d, #0.0
29+
// CHECK-INST: fmaxnm z0.d, p0/m, z0.d, #0.0
30+
// CHECK-ENCODING: [0x00,0x80,0xdc,0x65]
31+
// CHECK-ERROR: instruction requires: sve
32+
// CHECK-UNKNOWN: 00 80 dc 65 <unknown>
33+
34+
fmaxnm z31.h, p7/m, z31.h, #1.000000000000000
35+
// CHECK-INST: fmaxnm z31.h, p7/m, z31.h, #1.0
36+
// CHECK-ENCODING: [0x3f,0x9c,0x5c,0x65]
37+
// CHECK-ERROR: instruction requires: sve
38+
// CHECK-UNKNOWN: 3f 9c 5c 65 <unknown>
39+
40+
fmaxnm z31.h, p7/m, z31.h, #1.0
41+
// CHECK-INST: fmaxnm z31.h, p7/m, z31.h, #1.0
42+
// CHECK-ENCODING: [0x3f,0x9c,0x5c,0x65]
43+
// CHECK-ERROR: instruction requires: sve
44+
// CHECK-UNKNOWN: 3f 9c 5c 65 <unknown>
45+
46+
fmaxnm z31.s, p7/m, z31.s, #1.0
47+
// CHECK-INST: fmaxnm z31.s, p7/m, z31.s, #1.0
48+
// CHECK-ENCODING: [0x3f,0x9c,0x9c,0x65]
49+
// CHECK-ERROR: instruction requires: sve
50+
// CHECK-UNKNOWN: 3f 9c 9c 65 <unknown>
51+
52+
fmaxnm z31.d, p7/m, z31.d, #1.0
53+
// CHECK-INST: fmaxnm z31.d, p7/m, z31.d, #1.0
54+
// CHECK-ENCODING: [0x3f,0x9c,0xdc,0x65]
55+
// CHECK-ERROR: instruction requires: sve
56+
// CHECK-UNKNOWN: 3f 9c dc 65 <unknown>
57+
1058
fmaxnm z0.h, p7/m, z0.h, z31.h
1159
// CHECK-INST: fmaxnm z0.h, p7/m, z0.h, z31.h
1260
// CHECK-ENCODING: [0xe0,0x9f,0x44,0x65]

test/MC/AArch64/SVE/fmin-diagnostics.s

+28
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
22

3+
// ------------------------------------------------------------------------- //
4+
// Invalid immediates (must be 0.0 or 1.0)
5+
6+
fmin z0.h, p0/m, z0.h, #0.5
7+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
8+
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.5
9+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10+
11+
fmin z0.h, p0/m, z0.h, #-0.0
12+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
13+
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #-0.0
14+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
15+
16+
fmin z0.h, p0/m, z0.h, #0.0000000000000000000000001
17+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
18+
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.0000000000000000000000001
19+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
20+
21+
fmin z0.h, p0/m, z0.h, #1.0000000000000000000000001
22+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
23+
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #1.0000000000000000000000001
24+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
25+
26+
fmin z0.h, p0/m, z0.h, #0.9999999999999999999999999
27+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
28+
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.9999999999999999999999999
29+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
30+
331

432
// ------------------------------------------------------------------------- //
533
// Tied operands must match

test/MC/AArch64/SVE/fmin.s

+48
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,54 @@
77
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
88
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
99

10+
fmin z0.h, p0/m, z0.h, #0.000000000000000
11+
// CHECK-INST: fmin z0.h, p0/m, z0.h, #0.0
12+
// CHECK-ENCODING: [0x00,0x80,0x5f,0x65]
13+
// CHECK-ERROR: instruction requires: sve
14+
// CHECK-UNKNOWN: 00 80 5f 65 <unknown>
15+
16+
fmin z0.h, p0/m, z0.h, #0.0
17+
// CHECK-INST: fmin z0.h, p0/m, z0.h, #0.0
18+
// CHECK-ENCODING: [0x00,0x80,0x5f,0x65]
19+
// CHECK-ERROR: instruction requires: sve
20+
// CHECK-UNKNOWN: 00 80 5f 65 <unknown>
21+
22+
fmin z0.s, p0/m, z0.s, #0.0
23+
// CHECK-INST: fmin z0.s, p0/m, z0.s, #0.0
24+
// CHECK-ENCODING: [0x00,0x80,0x9f,0x65]
25+
// CHECK-ERROR: instruction requires: sve
26+
// CHECK-UNKNOWN: 00 80 9f 65 <unknown>
27+
28+
fmin z0.d, p0/m, z0.d, #0.0
29+
// CHECK-INST: fmin z0.d, p0/m, z0.d, #0.0
30+
// CHECK-ENCODING: [0x00,0x80,0xdf,0x65]
31+
// CHECK-ERROR: instruction requires: sve
32+
// CHECK-UNKNOWN: 00 80 df 65 <unknown>
33+
34+
fmin z31.h, p7/m, z31.h, #1.000000000000000
35+
// CHECK-INST: fmin z31.h, p7/m, z31.h, #1.0
36+
// CHECK-ENCODING: [0x3f,0x9c,0x5f,0x65]
37+
// CHECK-ERROR: instruction requires: sve
38+
// CHECK-UNKNOWN: 3f 9c 5f 65 <unknown>
39+
40+
fmin z31.h, p7/m, z31.h, #1.0
41+
// CHECK-INST: fmin z31.h, p7/m, z31.h, #1.0
42+
// CHECK-ENCODING: [0x3f,0x9c,0x5f,0x65]
43+
// CHECK-ERROR: instruction requires: sve
44+
// CHECK-UNKNOWN: 3f 9c 5f 65 <unknown>
45+
46+
fmin z31.s, p7/m, z31.s, #1.0
47+
// CHECK-INST: fmin z31.s, p7/m, z31.s, #1.0
48+
// CHECK-ENCODING: [0x3f,0x9c,0x9f,0x65]
49+
// CHECK-ERROR: instruction requires: sve
50+
// CHECK-UNKNOWN: 3f 9c 9f 65 <unknown>
51+
52+
fmin z31.d, p7/m, z31.d, #1.0
53+
// CHECK-INST: fmin z31.d, p7/m, z31.d, #1.0
54+
// CHECK-ENCODING: [0x3f,0x9c,0xdf,0x65]
55+
// CHECK-ERROR: instruction requires: sve
56+
// CHECK-UNKNOWN: 3f 9c df 65 <unknown>
57+
1058
fmin z0.h, p7/m, z0.h, z31.h
1159
// CHECK-INST: fmin z0.h, p7/m, z0.h, z31.h
1260
// CHECK-ENCODING: [0xe0,0x9f,0x47,0x65]

test/MC/AArch64/SVE/fminnm-diagnostics.s

+28
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
22

3+
// ------------------------------------------------------------------------- //
4+
// Invalid immediates (must be 0.0 or 1.0)
5+
6+
fminnm z0.h, p0/m, z0.h, #0.5
7+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
8+
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.5
9+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10+
11+
fminnm z0.h, p0/m, z0.h, #-0.0
12+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
13+
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #-0.0
14+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
15+
16+
fminnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
17+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
18+
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
19+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
20+
21+
fminnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
22+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
23+
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
24+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
25+
26+
fminnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
27+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
28+
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
29+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
30+
331

432
// ------------------------------------------------------------------------- //
533
// Tied operands must match

test/MC/AArch64/SVE/fminnm.s

+48
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,54 @@
77
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
88
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
99

10+
fminnm z0.h, p0/m, z0.h, #0.000000000000000
11+
// CHECK-INST: fminnm z0.h, p0/m, z0.h, #0.0
12+
// CHECK-ENCODING: [0x00,0x80,0x5d,0x65]
13+
// CHECK-ERROR: instruction requires: sve
14+
// CHECK-UNKNOWN: 00 80 5d 65 <unknown>
15+
16+
fminnm z0.h, p0/m, z0.h, #0.0
17+
// CHECK-INST: fminnm z0.h, p0/m, z0.h, #0.0
18+
// CHECK-ENCODING: [0x00,0x80,0x5d,0x65]
19+
// CHECK-ERROR: instruction requires: sve
20+
// CHECK-UNKNOWN: 00 80 5d 65 <unknown>
21+
22+
fminnm z0.s, p0/m, z0.s, #0.0
23+
// CHECK-INST: fminnm z0.s, p0/m, z0.s, #0.0
24+
// CHECK-ENCODING: [0x00,0x80,0x9d,0x65]
25+
// CHECK-ERROR: instruction requires: sve
26+
// CHECK-UNKNOWN: 00 80 9d 65 <unknown>
27+
28+
fminnm z0.d, p0/m, z0.d, #0.0
29+
// CHECK-INST: fminnm z0.d, p0/m, z0.d, #0.0
30+
// CHECK-ENCODING: [0x00,0x80,0xdd,0x65]
31+
// CHECK-ERROR: instruction requires: sve
32+
// CHECK-UNKNOWN: 00 80 dd 65 <unknown>
33+
34+
fminnm z31.h, p7/m, z31.h, #1.000000000000000
35+
// CHECK-INST: fminnm z31.h, p7/m, z31.h, #1.0
36+
// CHECK-ENCODING: [0x3f,0x9c,0x5d,0x65]
37+
// CHECK-ERROR: instruction requires: sve
38+
// CHECK-UNKNOWN: 3f 9c 5d 65 <unknown>
39+
40+
fminnm z31.h, p7/m, z31.h, #1.0
41+
// CHECK-INST: fminnm z31.h, p7/m, z31.h, #1.0
42+
// CHECK-ENCODING: [0x3f,0x9c,0x5d,0x65]
43+
// CHECK-ERROR: instruction requires: sve
44+
// CHECK-UNKNOWN: 3f 9c 5d 65 <unknown>
45+
46+
fminnm z31.s, p7/m, z31.s, #1.0
47+
// CHECK-INST: fminnm z31.s, p7/m, z31.s, #1.0
48+
// CHECK-ENCODING: [0x3f,0x9c,0x9d,0x65]
49+
// CHECK-ERROR: instruction requires: sve
50+
// CHECK-UNKNOWN: 3f 9c 9d 65 <unknown>
51+
52+
fminnm z31.d, p7/m, z31.d, #1.0
53+
// CHECK-INST: fminnm z31.d, p7/m, z31.d, #1.0
54+
// CHECK-ENCODING: [0x3f,0x9c,0xdd,0x65]
55+
// CHECK-ERROR: instruction requires: sve
56+
// CHECK-UNKNOWN: 3f 9c dd 65 <unknown>
57+
1058
fminnm z0.h, p7/m, z0.h, z31.h
1159
// CHECK-INST: fminnm z0.h, p7/m, z0.h, z31.h
1260
// CHECK-ENCODING: [0xe0,0x9f,0x45,0x65]

test/MC/AArch64/SVE/fsub-diagnostics.s

+28
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
22

3+
// ------------------------------------------------------------------------- //
4+
// Invalid immediates (must be 0.5 or 1.0)
5+
6+
fsub z0.h, p0/m, z0.h, #0.0
7+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
8+
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.0
9+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10+
11+
fsub z0.h, p0/m, z0.h, #0.4999999999999999999999999
12+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
13+
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.4999999999999999999999999
14+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
15+
16+
fsub z0.h, p0/m, z0.h, #0.5000000000000000000000001
17+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
18+
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.5000000000000000000000001
19+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
20+
21+
fsub z0.h, p0/m, z0.h, #1.0000000000000000000000001
22+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
23+
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #1.0000000000000000000000001
24+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
25+
26+
fsub z0.h, p0/m, z0.h, #0.9999999999999999999999999
27+
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
28+
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.9999999999999999999999999
29+
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
30+
331

432
// ------------------------------------------------------------------------- //
533
// Tied operands must match

test/MC/AArch64/SVE/fsub.s

+48
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,54 @@
77
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
88
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
99

10+
fsub z0.h, p0/m, z0.h, #0.500000000000000
11+
// CHECK-INST: fsub z0.h, p0/m, z0.h, #0.5
12+
// CHECK-ENCODING: [0x00,0x80,0x59,0x65]
13+
// CHECK-ERROR: instruction requires: sve
14+
// CHECK-UNKNOWN: 00 80 59 65 <unknown>
15+
16+
fsub z0.h, p0/m, z0.h, #0.5
17+
// CHECK-INST: fsub z0.h, p0/m, z0.h, #0.5
18+
// CHECK-ENCODING: [0x00,0x80,0x59,0x65]
19+
// CHECK-ERROR: instruction requires: sve
20+
// CHECK-UNKNOWN: 00 80 59 65 <unknown>
21+
22+
fsub z0.s, p0/m, z0.s, #0.5
23+
// CHECK-INST: fsub z0.s, p0/m, z0.s, #0.5
24+
// CHECK-ENCODING: [0x00,0x80,0x99,0x65]
25+
// CHECK-ERROR: instruction requires: sve
26+
// CHECK-UNKNOWN: 00 80 99 65 <unknown>
27+
28+
fsub z0.d, p0/m, z0.d, #0.5
29+
// CHECK-INST: fsub z0.d, p0/m, z0.d, #0.5
30+
// CHECK-ENCODING: [0x00,0x80,0xd9,0x65]
31+
// CHECK-ERROR: instruction requires: sve
32+
// CHECK-UNKNOWN: 00 80 d9 65 <unknown>
33+
34+
fsub z31.h, p7/m, z31.h, #1.000000000000000
35+
// CHECK-INST: fsub z31.h, p7/m, z31.h, #1.0
36+
// CHECK-ENCODING: [0x3f,0x9c,0x59,0x65]
37+
// CHECK-ERROR: instruction requires: sve
38+
// CHECK-UNKNOWN: 3f 9c 59 65 <unknown>
39+
40+
fsub z31.h, p7/m, z31.h, #1.0
41+
// CHECK-INST: fsub z31.h, p7/m, z31.h, #1.0
42+
// CHECK-ENCODING: [0x3f,0x9c,0x59,0x65]
43+
// CHECK-ERROR: instruction requires: sve
44+
// CHECK-UNKNOWN: 3f 9c 59 65 <unknown>
45+
46+
fsub z31.s, p7/m, z31.s, #1.0
47+
// CHECK-INST: fsub z31.s, p7/m, z31.s, #1.0
48+
// CHECK-ENCODING: [0x3f,0x9c,0x99,0x65]
49+
// CHECK-ERROR: instruction requires: sve
50+
// CHECK-UNKNOWN: 3f 9c 99 65 <unknown>
51+
52+
fsub z31.d, p7/m, z31.d, #1.0
53+
// CHECK-INST: fsub z31.d, p7/m, z31.d, #1.0
54+
// CHECK-ENCODING: [0x3f,0x9c,0xd9,0x65]
55+
// CHECK-ERROR: instruction requires: sve
56+
// CHECK-UNKNOWN: 3f 9c d9 65 <unknown>
57+
1058
fsub z0.h, p7/m, z0.h, z31.h
1159
// CHECK-INST: fsub z0.h, p7/m, z0.h, z31.h
1260
// CHECK-ENCODING: [0xe0,0x9f,0x41,0x65]

0 commit comments

Comments
 (0)