[llvm] r338126 - [AArch64][SVE] Asm: Predicated integer reductions.
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 27 07:24:55 PDT 2018
Author: s.desmalen
Date: Fri Jul 27 07:24:55 2018
New Revision: 338126
URL: http://llvm.org/viewvc/llvm-project?rev=338126&view=rev
Log:
[AArch64][SVE] Asm: Predicated integer reductions.
This patch adds support for various integer reduction operations:
SADDV signed add reduction to scalar
UADDV unsigned add reduction to scalar
SMAXV signed maximum reduction to scalar
SMINV signed minimum reduction to scalar
UMAXV unsigned maximum reduction to scalar
UMINV unsigned minimum reduction to scalar
ANDV logical AND reduction to scalar
ORV logical OR reduction to scalar
EORV logical EOR reduction to scalar
The reduction is predicated, e.g.
smaxv s0, p0, z1.s
performs a signed maximum reduction on active elements in z1,
and stores the (signed max value) result in s0.
Added:
llvm/trunk/test/MC/AArch64/SVE/andv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/andv.s
llvm/trunk/test/MC/AArch64/SVE/eorv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/eorv.s
llvm/trunk/test/MC/AArch64/SVE/orv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/orv.s
llvm/trunk/test/MC/AArch64/SVE/saddv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/saddv.s
llvm/trunk/test/MC/AArch64/SVE/smaxv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/smaxv.s
llvm/trunk/test/MC/AArch64/SVE/sminv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/sminv.s
llvm/trunk/test/MC/AArch64/SVE/uaddv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/uaddv.s
llvm/trunk/test/MC/AArch64/SVE/umaxv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/umaxv.s
llvm/trunk/test/MC/AArch64/SVE/uminv-diagnostics.s
llvm/trunk/test/MC/AArch64/SVE/uminv.s
Modified:
llvm/trunk/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/trunk/lib/Target/AArch64/SVEInstrFormats.td
Modified: llvm/trunk/lib/Target/AArch64/AArch64SVEInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64SVEInstrInfo.td?rev=338126&r1=338125&r2=338126&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64SVEInstrInfo.td (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64SVEInstrInfo.td Fri Jul 27 07:24:55 2018
@@ -53,6 +53,17 @@ let Predicates = [HasSVE] in {
defm MLA_ZPmZZ : sve_int_mlas_vvv_pred<0b0, "mla">;
defm MLS_ZPmZZ : sve_int_mlas_vvv_pred<0b1, "mls">;
+ // SVE predicated integer reductions.
+ defm SADDV_VPZ : sve_int_reduce_0_saddv<0b000, "saddv">;
+ defm UADDV_VPZ : sve_int_reduce_0_uaddv<0b001, "uaddv">;
+ defm SMAXV_VPZ : sve_int_reduce_1<0b000, "smaxv">;
+ defm UMAXV_VPZ : sve_int_reduce_1<0b001, "umaxv">;
+ defm SMINV_VPZ : sve_int_reduce_1<0b010, "sminv">;
+ defm UMINV_VPZ : sve_int_reduce_1<0b011, "uminv">;
+ defm ORV_VPZ : sve_int_reduce_2<0b000, "orv">;
+ defm EORV_VPZ : sve_int_reduce_2<0b001, "eorv">;
+ defm ANDV_VPZ : sve_int_reduce_2<0b010, "andv">;
+
defm ORR_ZI : sve_int_log_imm<0b00, "orr", "orn">;
defm EOR_ZI : sve_int_log_imm<0b01, "eor", "eon">;
defm AND_ZI : sve_int_log_imm<0b10, "and", "bic">;
Modified: llvm/trunk/lib/Target/AArch64/SVEInstrFormats.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/SVEInstrFormats.td?rev=338126&r1=338125&r2=338126&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/SVEInstrFormats.td (original)
+++ llvm/trunk/lib/Target/AArch64/SVEInstrFormats.td Fri Jul 27 07:24:55 2018
@@ -4066,3 +4066,54 @@ class sve_int_bin_cons_misc_0_c<bits<8>
let Inst{9-5} = Zn;
let Inst{4-0} = Zd;
}
+
+//===----------------------------------------------------------------------===//
+// SVE Integer Reduction Group
+//===----------------------------------------------------------------------===//
+
+class sve_int_reduce<bits<2> sz8_32, bits<2> fmt, bits<3> opc, string asm,
+ ZPRRegOp zprty, RegisterClass regtype>
+: I<(outs regtype:$Vd), (ins PPR3bAny:$Pg, zprty:$Zn),
+ asm, "\t$Vd, $Pg, $Zn",
+ "",
+ []>, Sched<[]> {
+ bits<3> Pg;
+ bits<5> Vd;
+ bits<5> Zn;
+ let Inst{31-24} = 0b00000100;
+ let Inst{23-22} = sz8_32;
+ let Inst{21} = 0b0;
+ let Inst{20-19} = fmt;
+ let Inst{18-16} = opc;
+ let Inst{15-13} = 0b001;
+ let Inst{12-10} = Pg;
+ let Inst{9-5} = Zn;
+ let Inst{4-0} = Vd;
+}
+
+multiclass sve_int_reduce_0_saddv<bits<3> opc, string asm> {
+ def _B : sve_int_reduce<0b00, 0b00, opc, asm, ZPR8, FPR64>;
+ def _H : sve_int_reduce<0b01, 0b00, opc, asm, ZPR16, FPR64>;
+ def _S : sve_int_reduce<0b10, 0b00, opc, asm, ZPR32, FPR64>;
+}
+
+multiclass sve_int_reduce_0_uaddv<bits<3> opc, string asm> {
+ def _B : sve_int_reduce<0b00, 0b00, opc, asm, ZPR8, FPR64>;
+ def _H : sve_int_reduce<0b01, 0b00, opc, asm, ZPR16, FPR64>;
+ def _S : sve_int_reduce<0b10, 0b00, opc, asm, ZPR32, FPR64>;
+ def _D : sve_int_reduce<0b11, 0b00, opc, asm, ZPR64, FPR64>;
+}
+
+multiclass sve_int_reduce_1<bits<3> opc, string asm> {
+ def _B : sve_int_reduce<0b00, 0b01, opc, asm, ZPR8, FPR8>;
+ def _H : sve_int_reduce<0b01, 0b01, opc, asm, ZPR16, FPR16>;
+ def _S : sve_int_reduce<0b10, 0b01, opc, asm, ZPR32, FPR32>;
+ def _D : sve_int_reduce<0b11, 0b01, opc, asm, ZPR64, FPR64>;
+}
+
+multiclass sve_int_reduce_2<bits<3> opc, string asm> {
+ def _B : sve_int_reduce<0b00, 0b11, opc, asm, ZPR8, FPR8>;
+ def _H : sve_int_reduce<0b01, 0b11, opc, asm, ZPR16, FPR16>;
+ def _S : sve_int_reduce<0b10, 0b11, opc, asm, ZPR32, FPR32>;
+ def _D : sve_int_reduce<0b11, 0b11, opc, asm, ZPR64, FPR64>;
+}
Added: llvm/trunk/test/MC/AArch64/SVE/andv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/andv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/andv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/andv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+andv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: andv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+andv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: andv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+andv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: andv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+andv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: andv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+andv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: andv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/andv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/andv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/andv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/andv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+andv b0, p7, z31.b
+// CHECK-INST: andv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x1a,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 1a 04 <unknown>
+
+andv h0, p7, z31.h
+// CHECK-INST: andv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x5a,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 5a 04 <unknown>
+
+andv s0, p7, z31.s
+// CHECK-INST: andv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x9a,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 9a 04 <unknown>
+
+andv d0, p7, z31.d
+// CHECK-INST: andv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xda,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f da 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/eorv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/eorv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/eorv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/eorv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+eorv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: eorv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+eorv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: eorv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+eorv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: eorv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+eorv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: eorv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+eorv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: eorv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/eorv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/eorv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/eorv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/eorv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+eorv b0, p7, z31.b
+// CHECK-INST: eorv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x19,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 19 04 <unknown>
+
+eorv h0, p7, z31.h
+// CHECK-INST: eorv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x59,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 59 04 <unknown>
+
+eorv s0, p7, z31.s
+// CHECK-INST: eorv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x99,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 99 04 <unknown>
+
+eorv d0, p7, z31.d
+// CHECK-INST: eorv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xd9,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f d9 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/orv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/orv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/orv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/orv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+orv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: orv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+orv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: orv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+orv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: orv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+orv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: orv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+orv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: orv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/orv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/orv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/orv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/orv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+orv b0, p7, z31.b
+// CHECK-INST: orv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x18,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 18 04 <unknown>
+
+orv h0, p7, z31.h
+// CHECK-INST: orv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x58,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 58 04 <unknown>
+
+orv s0, p7, z31.s
+// CHECK-INST: orv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x98,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 98 04 <unknown>
+
+orv d0, p7, z31.d
+// CHECK-INST: orv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xd8,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f d8 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/saddv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/saddv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/saddv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/saddv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+saddv s0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: saddv s0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+saddv s0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: saddv s0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+saddv s0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: saddv s0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+saddv d0, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: saddv d0, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+saddv d0, p8, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: saddv d0, p8, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/saddv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/saddv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/saddv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/saddv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,26 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+saddv d0, p7, z31.b
+// CHECK-INST: saddv d0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x00,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 00 04 <unknown>
+
+saddv d0, p7, z31.h
+// CHECK-INST: saddv d0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x40,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 40 04 <unknown>
+
+saddv d0, p7, z31.s
+// CHECK-INST: saddv d0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x80,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 80 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/smaxv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/smaxv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/smaxv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/smaxv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+smaxv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: smaxv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+smaxv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: smaxv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+smaxv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: smaxv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+smaxv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: smaxv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+smaxv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: smaxv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/smaxv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/smaxv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/smaxv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/smaxv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+smaxv b0, p7, z31.b
+// CHECK-INST: smaxv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x08,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 08 04 <unknown>
+
+smaxv h0, p7, z31.h
+// CHECK-INST: smaxv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x48,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 48 04 <unknown>
+
+smaxv s0, p7, z31.s
+// CHECK-INST: smaxv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x88,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 88 04 <unknown>
+
+smaxv d0, p7, z31.d
+// CHECK-INST: smaxv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xc8,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f c8 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/sminv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/sminv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/sminv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/sminv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+sminv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: sminv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sminv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: sminv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sminv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: sminv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sminv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: sminv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+sminv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: sminv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/sminv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/sminv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/sminv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/sminv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+sminv b0, p7, z31.b
+// CHECK-INST: sminv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x0a,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 0a 04 <unknown>
+
+sminv h0, p7, z31.h
+// CHECK-INST: sminv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x4a,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 4a 04 <unknown>
+
+sminv s0, p7, z31.s
+// CHECK-INST: sminv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x8a,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 8a 04 <unknown>
+
+sminv d0, p7, z31.d
+// CHECK-INST: sminv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xca,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f ca 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/uaddv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/uaddv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/uaddv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/uaddv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,29 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+uaddv s0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: uaddv s0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uaddv s0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: uaddv s0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uaddv s0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: uaddv s0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+uaddv d0, p8, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: uaddv d0, p8, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/uaddv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/uaddv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/uaddv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/uaddv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+uaddv d0, p7, z31.b
+// CHECK-INST: uaddv d0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x01,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 01 04 <unknown>
+
+uaddv d0, p7, z31.h
+// CHECK-INST: uaddv d0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x41,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 41 04 <unknown>
+
+uaddv d0, p7, z31.s
+// CHECK-INST: uaddv d0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x81,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 81 04 <unknown>
+
+uaddv d0, p7, z31.d
+// CHECK-INST: uaddv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xc1,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f c1 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/umaxv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/umaxv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/umaxv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/umaxv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+umaxv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: umaxv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+umaxv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: umaxv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+umaxv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: umaxv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+umaxv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: umaxv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+umaxv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: umaxv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/umaxv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/umaxv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/umaxv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/umaxv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+umaxv b0, p7, z31.b
+// CHECK-INST: umaxv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x09,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 09 04 <unknown>
+
+umaxv h0, p7, z31.h
+// CHECK-INST: umaxv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x49,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 49 04 <unknown>
+
+umaxv s0, p7, z31.s
+// CHECK-INST: umaxv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x89,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 89 04 <unknown>
+
+umaxv d0, p7, z31.d
+// CHECK-INST: umaxv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xc9,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f c9 04 <unknown>
Added: llvm/trunk/test/MC/AArch64/SVE/uminv-diagnostics.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/uminv-diagnostics.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/uminv-diagnostics.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/uminv-diagnostics.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,34 @@
+// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
+
+
+// ------------------------------------------------------------------------- //
+// Invalid destination or source register.
+
+uminv d0, p7, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: uminv d0, p7, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uminv d0, p7, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: uminv d0, p7, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uminv d0, p7, z31.s
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
+// CHECK-NEXT: uminv d0, p7, z31.s
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uminv v0.2d, p7, z31.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: uminv v0.2d, p7, z31.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate
+
+uminv h0, p8, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7].
+// CHECK-NEXT: uminv h0, p8, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
\ No newline at end of file
Added: llvm/trunk/test/MC/AArch64/SVE/uminv.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/SVE/uminv.s?rev=338126&view=auto
==============================================================================
--- llvm/trunk/test/MC/AArch64/SVE/uminv.s (added)
+++ llvm/trunk/test/MC/AArch64/SVE/uminv.s Fri Jul 27 07:24:55 2018
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \
+// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
+// 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 \
+// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
+// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
+// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
+
+uminv b0, p7, z31.b
+// CHECK-INST: uminv b0, p7, z31.b
+// CHECK-ENCODING: [0xe0,0x3f,0x0b,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 0b 04 <unknown>
+
+uminv h0, p7, z31.h
+// CHECK-INST: uminv h0, p7, z31.h
+// CHECK-ENCODING: [0xe0,0x3f,0x4b,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 4b 04 <unknown>
+
+uminv s0, p7, z31.s
+// CHECK-INST: uminv s0, p7, z31.s
+// CHECK-ENCODING: [0xe0,0x3f,0x8b,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f 8b 04 <unknown>
+
+uminv d0, p7, z31.d
+// CHECK-INST: uminv d0, p7, z31.d
+// CHECK-ENCODING: [0xe0,0x3f,0xcb,0x04]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: e0 3f cb 04 <unknown>
More information about the llvm-commits
mailing list