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

Commit

Permalink
[AArch64][SVE] Asm: Support for predicated FP operations (FP immediate)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
sdesmalen-arm committed Jul 17, 2018
1 parent 1c105a0 commit 5431fe0
Show file tree
Hide file tree
Showing 11 changed files with 385 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/Target/AArch64/AArch64SVEInstrInfo.td
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,13 @@ let Predicates = [HasSVE] in {
defm UABD_ZPmZ : sve_int_bin_pred_arit_1<0b101, "uabd">;

defm FADD_ZPmI : sve_fp_2op_i_p_zds<0b000, "fadd", sve_fpimm_half_one>;
defm FSUB_ZPmI : sve_fp_2op_i_p_zds<0b001, "fsub", sve_fpimm_half_one>;
defm FMUL_ZPmI : sve_fp_2op_i_p_zds<0b010, "fmul", sve_fpimm_half_two>;
defm FSUBR_ZPmI : sve_fp_2op_i_p_zds<0b011, "fsubr", sve_fpimm_half_one>;
defm FMAXNM_ZPmI : sve_fp_2op_i_p_zds<0b100, "fmaxnm", sve_fpimm_zero_one>;
defm FMINNM_ZPmI : sve_fp_2op_i_p_zds<0b101, "fminnm", sve_fpimm_zero_one>;
defm FMAX_ZPmI : sve_fp_2op_i_p_zds<0b110, "fmax", sve_fpimm_zero_one>;
defm FMIN_ZPmI : sve_fp_2op_i_p_zds<0b111, "fmin", sve_fpimm_zero_one>;

defm FADD_ZPmZ : sve_fp_2op_p_zds<0b0000, "fadd">;
defm FSUB_ZPmZ : sve_fp_2op_p_zds<0b0001, "fsub">;
Expand Down
28 changes: 28 additions & 0 deletions test/MC/AArch64/SVE/fmaxnm-diagnostics.s
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s

// ------------------------------------------------------------------------- //
// Invalid immediates (must be 0.0 or 1.0)

fmaxnm z0.h, p0/m, z0.h, #0.5
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.5
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmaxnm z0.h, p0/m, z0.h, #-0.0
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #-0.0
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmaxnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmaxnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmaxnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:


// ------------------------------------------------------------------------- //
// Tied operands must match
Expand Down
48 changes: 48 additions & 0 deletions test/MC/AArch64/SVE/fmaxnm.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,54 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN

fmaxnm z0.h, p0/m, z0.h, #0.000000000000000
// CHECK-INST: fmaxnm z0.h, p0/m, z0.h, #0.0
// CHECK-ENCODING: [0x00,0x80,0x5c,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 5c 65 <unknown>

fmaxnm z0.h, p0/m, z0.h, #0.0
// CHECK-INST: fmaxnm z0.h, p0/m, z0.h, #0.0
// CHECK-ENCODING: [0x00,0x80,0x5c,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 5c 65 <unknown>

fmaxnm z0.s, p0/m, z0.s, #0.0
// CHECK-INST: fmaxnm z0.s, p0/m, z0.s, #0.0
// CHECK-ENCODING: [0x00,0x80,0x9c,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 9c 65 <unknown>

fmaxnm z0.d, p0/m, z0.d, #0.0
// CHECK-INST: fmaxnm z0.d, p0/m, z0.d, #0.0
// CHECK-ENCODING: [0x00,0x80,0xdc,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 dc 65 <unknown>

fmaxnm z31.h, p7/m, z31.h, #1.000000000000000
// CHECK-INST: fmaxnm z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x5c,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 5c 65 <unknown>

fmaxnm z31.h, p7/m, z31.h, #1.0
// CHECK-INST: fmaxnm z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x5c,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 5c 65 <unknown>

fmaxnm z31.s, p7/m, z31.s, #1.0
// CHECK-INST: fmaxnm z31.s, p7/m, z31.s, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x9c,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 9c 65 <unknown>

fmaxnm z31.d, p7/m, z31.d, #1.0
// CHECK-INST: fmaxnm z31.d, p7/m, z31.d, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0xdc,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c dc 65 <unknown>

fmaxnm z0.h, p7/m, z0.h, z31.h
// CHECK-INST: fmaxnm z0.h, p7/m, z0.h, z31.h
// CHECK-ENCODING: [0xe0,0x9f,0x44,0x65]
Expand Down
28 changes: 28 additions & 0 deletions test/MC/AArch64/SVE/fmin-diagnostics.s
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s

// ------------------------------------------------------------------------- //
// Invalid immediates (must be 0.0 or 1.0)

fmin z0.h, p0/m, z0.h, #0.5
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.5
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmin z0.h, p0/m, z0.h, #-0.0
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #-0.0
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmin z0.h, p0/m, z0.h, #0.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmin z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fmin z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:


// ------------------------------------------------------------------------- //
// Tied operands must match
Expand Down
48 changes: 48 additions & 0 deletions test/MC/AArch64/SVE/fmin.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,54 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN

fmin z0.h, p0/m, z0.h, #0.000000000000000
// CHECK-INST: fmin z0.h, p0/m, z0.h, #0.0
// CHECK-ENCODING: [0x00,0x80,0x5f,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 5f 65 <unknown>

fmin z0.h, p0/m, z0.h, #0.0
// CHECK-INST: fmin z0.h, p0/m, z0.h, #0.0
// CHECK-ENCODING: [0x00,0x80,0x5f,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 5f 65 <unknown>

fmin z0.s, p0/m, z0.s, #0.0
// CHECK-INST: fmin z0.s, p0/m, z0.s, #0.0
// CHECK-ENCODING: [0x00,0x80,0x9f,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 9f 65 <unknown>

fmin z0.d, p0/m, z0.d, #0.0
// CHECK-INST: fmin z0.d, p0/m, z0.d, #0.0
// CHECK-ENCODING: [0x00,0x80,0xdf,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 df 65 <unknown>

fmin z31.h, p7/m, z31.h, #1.000000000000000
// CHECK-INST: fmin z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x5f,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 5f 65 <unknown>

fmin z31.h, p7/m, z31.h, #1.0
// CHECK-INST: fmin z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x5f,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 5f 65 <unknown>

fmin z31.s, p7/m, z31.s, #1.0
// CHECK-INST: fmin z31.s, p7/m, z31.s, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x9f,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 9f 65 <unknown>

fmin z31.d, p7/m, z31.d, #1.0
// CHECK-INST: fmin z31.d, p7/m, z31.d, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0xdf,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c df 65 <unknown>

fmin z0.h, p7/m, z0.h, z31.h
// CHECK-INST: fmin z0.h, p7/m, z0.h, z31.h
// CHECK-ENCODING: [0xe0,0x9f,0x47,0x65]
Expand Down
28 changes: 28 additions & 0 deletions test/MC/AArch64/SVE/fminnm-diagnostics.s
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s

// ------------------------------------------------------------------------- //
// Invalid immediates (must be 0.0 or 1.0)

fminnm z0.h, p0/m, z0.h, #0.5
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.5
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fminnm z0.h, p0/m, z0.h, #-0.0
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #-0.0
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fminnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fminnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fminnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.0 or 1.0.
// CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:


// ------------------------------------------------------------------------- //
// Tied operands must match
Expand Down
48 changes: 48 additions & 0 deletions test/MC/AArch64/SVE/fminnm.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,54 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN

fminnm z0.h, p0/m, z0.h, #0.000000000000000
// CHECK-INST: fminnm z0.h, p0/m, z0.h, #0.0
// CHECK-ENCODING: [0x00,0x80,0x5d,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 5d 65 <unknown>

fminnm z0.h, p0/m, z0.h, #0.0
// CHECK-INST: fminnm z0.h, p0/m, z0.h, #0.0
// CHECK-ENCODING: [0x00,0x80,0x5d,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 5d 65 <unknown>

fminnm z0.s, p0/m, z0.s, #0.0
// CHECK-INST: fminnm z0.s, p0/m, z0.s, #0.0
// CHECK-ENCODING: [0x00,0x80,0x9d,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 9d 65 <unknown>

fminnm z0.d, p0/m, z0.d, #0.0
// CHECK-INST: fminnm z0.d, p0/m, z0.d, #0.0
// CHECK-ENCODING: [0x00,0x80,0xdd,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 dd 65 <unknown>

fminnm z31.h, p7/m, z31.h, #1.000000000000000
// CHECK-INST: fminnm z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x5d,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 5d 65 <unknown>

fminnm z31.h, p7/m, z31.h, #1.0
// CHECK-INST: fminnm z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x5d,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 5d 65 <unknown>

fminnm z31.s, p7/m, z31.s, #1.0
// CHECK-INST: fminnm z31.s, p7/m, z31.s, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x9d,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 9d 65 <unknown>

fminnm z31.d, p7/m, z31.d, #1.0
// CHECK-INST: fminnm z31.d, p7/m, z31.d, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0xdd,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c dd 65 <unknown>

fminnm z0.h, p7/m, z0.h, z31.h
// CHECK-INST: fminnm z0.h, p7/m, z0.h, z31.h
// CHECK-ENCODING: [0xe0,0x9f,0x45,0x65]
Expand Down
28 changes: 28 additions & 0 deletions test/MC/AArch64/SVE/fsub-diagnostics.s
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s

// ------------------------------------------------------------------------- //
// Invalid immediates (must be 0.5 or 1.0)

fsub z0.h, p0/m, z0.h, #0.0
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.0
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fsub z0.h, p0/m, z0.h, #0.4999999999999999999999999
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.4999999999999999999999999
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fsub z0.h, p0/m, z0.h, #0.5000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.5000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fsub z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #1.0000000000000000000000001
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

fsub z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid floating point constant, expected 0.5 or 1.0.
// CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.9999999999999999999999999
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:


// ------------------------------------------------------------------------- //
// Tied operands must match
Expand Down
48 changes: 48 additions & 0 deletions test/MC/AArch64/SVE/fsub.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,54 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN

fsub z0.h, p0/m, z0.h, #0.500000000000000
// CHECK-INST: fsub z0.h, p0/m, z0.h, #0.5
// CHECK-ENCODING: [0x00,0x80,0x59,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 59 65 <unknown>

fsub z0.h, p0/m, z0.h, #0.5
// CHECK-INST: fsub z0.h, p0/m, z0.h, #0.5
// CHECK-ENCODING: [0x00,0x80,0x59,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 59 65 <unknown>

fsub z0.s, p0/m, z0.s, #0.5
// CHECK-INST: fsub z0.s, p0/m, z0.s, #0.5
// CHECK-ENCODING: [0x00,0x80,0x99,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 99 65 <unknown>

fsub z0.d, p0/m, z0.d, #0.5
// CHECK-INST: fsub z0.d, p0/m, z0.d, #0.5
// CHECK-ENCODING: [0x00,0x80,0xd9,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 00 80 d9 65 <unknown>

fsub z31.h, p7/m, z31.h, #1.000000000000000
// CHECK-INST: fsub z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x59,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 59 65 <unknown>

fsub z31.h, p7/m, z31.h, #1.0
// CHECK-INST: fsub z31.h, p7/m, z31.h, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x59,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 59 65 <unknown>

fsub z31.s, p7/m, z31.s, #1.0
// CHECK-INST: fsub z31.s, p7/m, z31.s, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0x99,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c 99 65 <unknown>

fsub z31.d, p7/m, z31.d, #1.0
// CHECK-INST: fsub z31.d, p7/m, z31.d, #1.0
// CHECK-ENCODING: [0x3f,0x9c,0xd9,0x65]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: 3f 9c d9 65 <unknown>

fsub z0.h, p7/m, z0.h, z31.h
// CHECK-INST: fsub z0.h, p7/m, z0.h, z31.h
// CHECK-ENCODING: [0xe0,0x9f,0x41,0x65]
Expand Down
Loading

0 comments on commit 5431fe0

Please sign in to comment.