forked from OSchip/llvm-project
[AArch64][SVE] Asm: Support for vector element FP compare.
Contains the following variants: - Compare with (elements from) other vector instructions: fcmeq, fcmgt, fcmge, fcmne, fcmuo. aliases: fcmle, fcmlt. e.g. fcmle p0.h, p0/z, z0.h, z1.h => fcmge p0.h, p0/z, z1.h, z0.h - Compare absolute values with (absolute values from) other vector. instructions: facge, facgt. aliases: facle, faclt. e.g. facle p0.h, p0/z, z0.h, z1.h => facge p0.h, p0/z, z1.h, z0.h - Compare vector elements with #0.0 instructions: fcmeq, fcmgt, fcmge, fcmle, fcmlt, fcmne. e.g. fcmle p0.h, p0/z, z0.h, #0.0 llvm-svn: 336182
This commit is contained in:
parent
13a7b37ad4
commit
8fcc3f5feb
|
@ -538,6 +538,21 @@ let Predicates = [HasSVE] in {
|
|||
defm CMPLO_PPzZI : sve_int_ucmp_vi<0b10, "cmplo">;
|
||||
defm CMPLS_PPzZI : sve_int_ucmp_vi<0b11, "cmpls">;
|
||||
|
||||
defm FCMGE_PPzZZ : sve_fp_3op_p_pd<0b000, "fcmge">;
|
||||
defm FCMGT_PPzZZ : sve_fp_3op_p_pd<0b001, "fcmgt">;
|
||||
defm FCMEQ_PPzZZ : sve_fp_3op_p_pd<0b010, "fcmeq">;
|
||||
defm FCMNE_PPzZZ : sve_fp_3op_p_pd<0b011, "fcmne">;
|
||||
defm FCMUO_PPzZZ : sve_fp_3op_p_pd<0b100, "fcmuo">;
|
||||
defm FACGE_PPzZZ : sve_fp_3op_p_pd<0b101, "facge">;
|
||||
defm FACGT_PPzZZ : sve_fp_3op_p_pd<0b111, "facgt">;
|
||||
|
||||
defm FCMGE_PPzZ0 : sve_fp_2op_p_pd<0b000, "fcmge">;
|
||||
defm FCMGT_PPzZ0 : sve_fp_2op_p_pd<0b001, "fcmgt">;
|
||||
defm FCMLT_PPzZ0 : sve_fp_2op_p_pd<0b010, "fcmlt">;
|
||||
defm FCMLE_PPzZ0 : sve_fp_2op_p_pd<0b011, "fcmle">;
|
||||
defm FCMEQ_PPzZ0 : sve_fp_2op_p_pd<0b100, "fcmeq">;
|
||||
defm FCMNE_PPzZ0 : sve_fp_2op_p_pd<0b110, "fcmne">;
|
||||
|
||||
defm SQINCB_XPiWdI : sve_int_pred_pattern_b_s32<0b00000, "sqincb">;
|
||||
defm UQINCB_WPiI : sve_int_pred_pattern_b_u32<0b00001, "uqincb">;
|
||||
defm SQDECB_XPiWdI : sve_int_pred_pattern_b_s32<0b00010, "sqdecb">;
|
||||
|
@ -678,4 +693,32 @@ let Predicates = [HasSVE] in {
|
|||
(CMPGT_PPzZZ_S PPR32:$Zd, PPR3bAny:$Pg, ZPR32:$Zn, ZPR32:$Zm), 0>;
|
||||
def : InstAlias<"cmplt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(CMPGT_PPzZZ_D PPR64:$Zd, PPR3bAny:$Pg, ZPR64:$Zn, ZPR64:$Zm), 0>;
|
||||
|
||||
def : InstAlias<"facle $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FACGE_PPzZZ_H PPR16:$Zd, PPR3bAny:$Pg, ZPR16:$Zn, ZPR16:$Zm), 0>;
|
||||
def : InstAlias<"facle $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FACGE_PPzZZ_S PPR32:$Zd, PPR3bAny:$Pg, ZPR32:$Zn, ZPR32:$Zm), 0>;
|
||||
def : InstAlias<"facle $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FACGE_PPzZZ_D PPR64:$Zd, PPR3bAny:$Pg, ZPR64:$Zn, ZPR64:$Zm), 0>;
|
||||
|
||||
def : InstAlias<"faclt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FACGT_PPzZZ_H PPR16:$Zd, PPR3bAny:$Pg, ZPR16:$Zn, ZPR16:$Zm), 0>;
|
||||
def : InstAlias<"faclt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FACGT_PPzZZ_S PPR32:$Zd, PPR3bAny:$Pg, ZPR32:$Zn, ZPR32:$Zm), 0>;
|
||||
def : InstAlias<"faclt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FACGT_PPzZZ_D PPR64:$Zd, PPR3bAny:$Pg, ZPR64:$Zn, ZPR64:$Zm), 0>;
|
||||
|
||||
def : InstAlias<"fcmle $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FCMGE_PPzZZ_H PPR16:$Zd, PPR3bAny:$Pg, ZPR16:$Zn, ZPR16:$Zm), 0>;
|
||||
def : InstAlias<"fcmle $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FCMGE_PPzZZ_S PPR32:$Zd, PPR3bAny:$Pg, ZPR32:$Zn, ZPR32:$Zm), 0>;
|
||||
def : InstAlias<"fcmle $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FCMGE_PPzZZ_D PPR64:$Zd, PPR3bAny:$Pg, ZPR64:$Zn, ZPR64:$Zm), 0>;
|
||||
|
||||
def : InstAlias<"fcmlt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FCMGT_PPzZZ_H PPR16:$Zd, PPR3bAny:$Pg, ZPR16:$Zn, ZPR16:$Zm), 0>;
|
||||
def : InstAlias<"fcmlt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FCMGT_PPzZZ_S PPR32:$Zd, PPR3bAny:$Pg, ZPR32:$Zn, ZPR32:$Zm), 0>;
|
||||
def : InstAlias<"fcmlt $Zd, $Pg/z, $Zm, $Zn",
|
||||
(FCMGT_PPzZZ_D PPR64:$Zd, PPR3bAny:$Pg, ZPR64:$Zn, ZPR64:$Zm), 0>;
|
||||
}
|
||||
|
|
|
@ -3381,7 +3381,7 @@ bool AArch64AsmParser::parseOperand(OperandVector &Operands, bool isCondCode,
|
|||
uint64_t IntVal = RealVal.bitcastToAPInt().getZExtValue();
|
||||
if (Mnemonic != "fcmp" && Mnemonic != "fcmpe" && Mnemonic != "fcmeq" &&
|
||||
Mnemonic != "fcmge" && Mnemonic != "fcmgt" && Mnemonic != "fcmle" &&
|
||||
Mnemonic != "fcmlt")
|
||||
Mnemonic != "fcmlt" && Mnemonic != "fcmne")
|
||||
return TokError("unexpected floating point literal");
|
||||
else if (IntVal != 0 || isNegative)
|
||||
return TokError("expected floating-point constant #0.0");
|
||||
|
|
|
@ -1231,6 +1231,71 @@ multiclass sve_int_ucmp_vi<bits<2> opc, string asm> {
|
|||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// SVE Floating Point Compare - Vectors Group
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class sve_fp_3op_p_pd<bits<2> sz, bits<3> opc, string asm, PPRRegOp pprty,
|
||||
ZPRRegOp zprty>
|
||||
: I<(outs pprty:$Pd), (ins PPR3bAny:$Pg, zprty:$Zn, zprty:$Zm),
|
||||
asm, "\t$Pd, $Pg/z, $Zn, $Zm",
|
||||
"",
|
||||
[]>, Sched<[]> {
|
||||
bits<4> Pd;
|
||||
bits<3> Pg;
|
||||
bits<5> Zm;
|
||||
bits<5> Zn;
|
||||
let Inst{31-24} = 0b01100101;
|
||||
let Inst{23-22} = sz;
|
||||
let Inst{21} = 0b0;
|
||||
let Inst{20-16} = Zm;
|
||||
let Inst{15} = opc{2};
|
||||
let Inst{14} = 0b1;
|
||||
let Inst{13} = opc{1};
|
||||
let Inst{12-10} = Pg;
|
||||
let Inst{9-5} = Zn;
|
||||
let Inst{4} = opc{0};
|
||||
let Inst{3-0} = Pd;
|
||||
}
|
||||
|
||||
multiclass sve_fp_3op_p_pd<bits<3> opc, string asm> {
|
||||
def _H : sve_fp_3op_p_pd<0b01, opc, asm, PPR16, ZPR16>;
|
||||
def _S : sve_fp_3op_p_pd<0b10, opc, asm, PPR32, ZPR32>;
|
||||
def _D : sve_fp_3op_p_pd<0b11, opc, asm, PPR64, ZPR64>;
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// SVE Floating Point Compare - with Zero Group
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class sve_fp_2op_p_pd<bits<2> sz, bits<3> opc, string asm, PPRRegOp pprty,
|
||||
ZPRRegOp zprty>
|
||||
: I<(outs pprty:$Pd), (ins PPR3bAny:$Pg, zprty:$Zn),
|
||||
asm, "\t$Pd, $Pg/z, $Zn, #0.0",
|
||||
"",
|
||||
[]>, Sched<[]> {
|
||||
bits<4> Pd;
|
||||
bits<3> Pg;
|
||||
bits<5> Zn;
|
||||
let Inst{31-24} = 0b01100101;
|
||||
let Inst{23-22} = sz;
|
||||
let Inst{21-18} = 0b0100;
|
||||
let Inst{17-16} = opc{2-1};
|
||||
let Inst{15-13} = 0b001;
|
||||
let Inst{12-10} = Pg;
|
||||
let Inst{9-5} = Zn;
|
||||
let Inst{4} = opc{0};
|
||||
let Inst{3-0} = Pd;
|
||||
}
|
||||
|
||||
multiclass sve_fp_2op_p_pd<bits<3> opc, string asm> {
|
||||
def _H : sve_fp_2op_p_pd<0b01, opc, asm, PPR16, ZPR16>;
|
||||
def _S : sve_fp_2op_p_pd<0b10, opc, asm, PPR32, ZPR32>;
|
||||
def _D : sve_fp_2op_p_pd<0b11, opc, asm, PPR64, ZPR64>;
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//SVE Index Generation Group
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
facge p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: facge p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
facge p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected floating point literal
|
||||
// CHECK-NEXT: facge p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -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
|
||||
|
||||
facge p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: facge p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x10,0xc0,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 c0 41 65 <unknown>
|
||||
|
||||
facge p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: facge p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x10,0xc0,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 c0 81 65 <unknown>
|
||||
|
||||
facge p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: facge p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x10,0xc0,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 c0 c1 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
facgt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: facgt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
facgt p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected floating point literal
|
||||
// CHECK-NEXT: facgt p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -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
|
||||
|
||||
facgt p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: facgt p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x10,0xe0,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 e0 41 65 <unknown>
|
||||
|
||||
facgt p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: facgt p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x10,0xe0,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 e0 81 65 <unknown>
|
||||
|
||||
facgt p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: facgt p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x10,0xe0,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 e0 c1 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
facle p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: facle p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
facle p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected floating point literal
|
||||
// CHECK-NEXT: facle p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -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
|
||||
|
||||
facle p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: facge p0.h, p0/z, z1.h, z0.h
|
||||
// CHECK-ENCODING: [0x30,0xc0,0x40,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 c0 40 65 <unknown>
|
||||
|
||||
facle p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: facge p0.s, p0/z, z1.s, z0.s
|
||||
// CHECK-ENCODING: [0x30,0xc0,0x80,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 c0 80 65 <unknown>
|
||||
|
||||
facle p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: facge p0.d, p0/z, z1.d, z0.d
|
||||
// CHECK-ENCODING: [0x30,0xc0,0xc0,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 c0 c0 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
faclt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: faclt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
faclt p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected floating point literal
|
||||
// CHECK-NEXT: faclt p0.b, p0/z, z0.b, #0.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -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
|
||||
|
||||
faclt p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: facgt p0.h, p0/z, z1.h, z0.h
|
||||
// CHECK-ENCODING: [0x30,0xe0,0x40,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 e0 40 65 <unknown>
|
||||
|
||||
faclt p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: facgt p0.s, p0/z, z1.s, z0.s
|
||||
// CHECK-ENCODING: [0x30,0xe0,0x80,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 e0 80 65 <unknown>
|
||||
|
||||
faclt p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: facgt p0.d, p0/z, z1.d, z0.d
|
||||
// CHECK-ENCODING: [0x30,0xe0,0xc0,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 e0 c0 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmeq p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmeq p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmeq p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected floating-point constant #0.0
|
||||
// CHECK-NEXT: fcmeq p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,44 @@
|
|||
// 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
|
||||
|
||||
fcmeq p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-INST: fcmeq p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x52,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 52 65 <unknown>
|
||||
|
||||
fcmeq p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-INST: fcmeq p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x92,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 92 65 <unknown>
|
||||
|
||||
fcmeq p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-INST: fcmeq p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0xd2,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 d2 65 <unknown>
|
||||
|
||||
fcmeq p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmeq p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x00,0x60,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 60 41 65 <unknown>
|
||||
|
||||
fcmeq p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmeq p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x00,0x60,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 60 81 65 <unknown>
|
||||
|
||||
fcmeq p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmeq p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x00,0x60,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 60 c1 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmge p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmge p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmge p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected floating-point constant #0.0
|
||||
// CHECK-NEXT: fcmge p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,44 @@
|
|||
// 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
|
||||
|
||||
fcmge p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-INST: fcmge p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x50,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 50 65 <unknown>
|
||||
|
||||
fcmge p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-INST: fcmge p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x90,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 90 65 <unknown>
|
||||
|
||||
fcmge p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-INST: fcmge p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0xd0,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 d0 65 <unknown>
|
||||
|
||||
fcmge p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmge p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x00,0x40,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 40 41 65 <unknown>
|
||||
|
||||
fcmge p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmge p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x00,0x40,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 40 81 65 <unknown>
|
||||
|
||||
fcmge p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmge p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x00,0x40,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 40 c1 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmgt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmgt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmgt p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected floating-point constant #0.0
|
||||
// CHECK-NEXT: fcmgt p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,44 @@
|
|||
// 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
|
||||
|
||||
fcmgt p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-INST: fcmgt p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-ENCODING: [0x10,0x20,0x50,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 20 50 65 <unknown>
|
||||
|
||||
fcmgt p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-INST: fcmgt p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-ENCODING: [0x10,0x20,0x90,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 20 90 65 <unknown>
|
||||
|
||||
fcmgt p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-INST: fcmgt p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-ENCODING: [0x10,0x20,0xd0,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 20 d0 65 <unknown>
|
||||
|
||||
fcmgt p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmgt p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x10,0x40,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 40 41 65 <unknown>
|
||||
|
||||
fcmgt p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmgt p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x10,0x40,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 40 81 65 <unknown>
|
||||
|
||||
fcmgt p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmgt p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x10,0x40,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 40 c1 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmle p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmle p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmle p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected floating-point constant #0.0
|
||||
// CHECK-NEXT: fcmle p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,44 @@
|
|||
// 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
|
||||
|
||||
fcmle p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-INST: fcmle p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-ENCODING: [0x10,0x20,0x51,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 20 51 65 <unknown>
|
||||
|
||||
fcmle p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-INST: fcmle p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-ENCODING: [0x10,0x20,0x91,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 20 91 65 <unknown>
|
||||
|
||||
fcmle p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-INST: fcmle p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-ENCODING: [0x10,0x20,0xd1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 20 d1 65 <unknown>
|
||||
|
||||
fcmle p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmge p0.h, p0/z, z1.h, z0.h
|
||||
// CHECK-ENCODING: [0x20,0x40,0x40,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 20 40 40 65 <unknown>
|
||||
|
||||
fcmle p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmge p0.s, p0/z, z1.s, z0.s
|
||||
// CHECK-ENCODING: [0x20,0x40,0x80,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 20 40 80 65 <unknown>
|
||||
|
||||
fcmle p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmge p0.d, p0/z, z1.d, z0.d
|
||||
// CHECK-ENCODING: [0x20,0x40,0xc0,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 20 40 c0 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmlt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmlt p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmlt p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected floating-point constant #0.0
|
||||
// CHECK-NEXT: fcmlt p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,44 @@
|
|||
// 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
|
||||
|
||||
fcmlt p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-INST: fcmlt p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x51,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 51 65 <unknown>
|
||||
|
||||
fcmlt p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-INST: fcmlt p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x91,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 91 65 <unknown>
|
||||
|
||||
fcmlt p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-INST: fcmlt p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0xd1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 d1 65 <unknown>
|
||||
|
||||
fcmlt p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmgt p0.h, p0/z, z1.h, z0.h
|
||||
// CHECK-ENCODING: [0x30,0x40,0x40,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 40 40 65 <unknown>
|
||||
|
||||
fcmlt p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmgt p0.s, p0/z, z1.s, z0.s
|
||||
// CHECK-ENCODING: [0x30,0x40,0x80,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 40 80 65 <unknown>
|
||||
|
||||
fcmlt p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmgt p0.d, p0/z, z1.d, z0.d
|
||||
// CHECK-ENCODING: [0x30,0x40,0xc0,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 30 40 c0 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmne p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmne p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmne p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected floating-point constant #0.0
|
||||
// CHECK-NEXT: fcmne p0.s, p0/z, z0.s, #1.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,44 @@
|
|||
// 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
|
||||
|
||||
fcmne p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-INST: fcmne p0.h, p0/z, z0.h, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x53,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 53 65 <unknown>
|
||||
|
||||
fcmne p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-INST: fcmne p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0x93,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 93 65 <unknown>
|
||||
|
||||
fcmne p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-INST: fcmne p0.d, p0/z, z0.d, #0.0
|
||||
// CHECK-ENCODING: [0x00,0x20,0xd3,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 20 d3 65 <unknown>
|
||||
|
||||
fcmne p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmne p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x10,0x60,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 60 41 65 <unknown>
|
||||
|
||||
fcmne p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmne p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x10,0x60,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 60 81 65 <unknown>
|
||||
|
||||
fcmne p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmne p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x10,0x60,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 10 60 c1 65 <unknown>
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s
|
||||
|
||||
fcmuo p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
|
||||
// CHECK-NEXT: fcmuo p0.b, p0/z, z0.b, z0.b
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
||||
|
||||
fcmuo p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: unexpected floating point literal
|
||||
// CHECK-NEXT: fcmuo p0.s, p0/z, z0.s, #0.0
|
||||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
|
|
@ -0,0 +1,27 @@
|
|||
// 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
|
||||
|
||||
fcmuo p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-INST: fcmuo p0.h, p0/z, z0.h, z1.h
|
||||
// CHECK-ENCODING: [0x00,0xc0,0x41,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 c0 41 65 <unknown>
|
||||
|
||||
fcmuo p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-INST: fcmuo p0.s, p0/z, z0.s, z1.s
|
||||
// CHECK-ENCODING: [0x00,0xc0,0x81,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 c0 81 65 <unknown>
|
||||
|
||||
fcmuo p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-INST: fcmuo p0.d, p0/z, z0.d, z1.d
|
||||
// CHECK-ENCODING: [0x00,0xc0,0xc1,0x65]
|
||||
// CHECK-ERROR: instruction requires: sve
|
||||
// CHECK-UNKNOWN: 00 c0 c1 65 <unknown>
|
||||
|
Loading…
Reference in New Issue