diff --git a/clang-tools-extra/clang-tidy/google/CMakeLists.txt b/clang-tools-extra/clang-tidy/google/CMakeLists.txt index ac053bc92a0a4..982a188e8e808 100644 --- a/clang-tools-extra/clang-tidy/google/CMakeLists.txt +++ b/clang-tools-extra/clang-tidy/google/CMakeLists.txt @@ -24,6 +24,7 @@ add_clang_library(clangTidyGoogleModule STATIC LINK_LIBS clangTidy + clangTidyModernizeModule clangTidyReadabilityModule clangTidyUtils diff --git a/clang-tools-extra/clangd/SemanticSelection.cpp b/clang-tools-extra/clangd/SemanticSelection.cpp index dc61a40d733f8..71ebf00d83c28 100644 --- a/clang-tools-extra/clangd/SemanticSelection.cpp +++ b/clang-tools-extra/clangd/SemanticSelection.cpp @@ -42,72 +42,6 @@ void addIfDistinct(const Range &R, std::vector &Result) { } } -std::optional toFoldingRange(SourceRange SR, - const SourceManager &SM) { - const auto Begin = SM.getDecomposedLoc(SR.getBegin()), - End = SM.getDecomposedLoc(SR.getEnd()); - // Do not produce folding ranges if either range ends is not within the main - // file. Macros have their own FileID so this also checks if locations are not - // within the macros. - if ((Begin.first != SM.getMainFileID()) || (End.first != SM.getMainFileID())) - return std::nullopt; - FoldingRange Range; - Range.startCharacter = SM.getColumnNumber(Begin.first, Begin.second) - 1; - Range.startLine = SM.getLineNumber(Begin.first, Begin.second) - 1; - Range.endCharacter = SM.getColumnNumber(End.first, End.second) - 1; - Range.endLine = SM.getLineNumber(End.first, End.second) - 1; - return Range; -} - -std::optional -extractFoldingRange(const syntax::Node *Node, - const syntax::TokenBufferTokenManager &TM) { - if (const auto *Stmt = dyn_cast(Node)) { - const auto *LBrace = cast_or_null( - Stmt->findChild(syntax::NodeRole::OpenParen)); - // FIXME(kirillbobyrev): This should find the last child. Compound - // statements have only one pair of braces so this is valid but for other - // node kinds it might not be correct. - const auto *RBrace = cast_or_null( - Stmt->findChild(syntax::NodeRole::CloseParen)); - if (!LBrace || !RBrace) - return std::nullopt; - // Fold the entire range within braces, including whitespace. - const SourceLocation LBraceLocInfo = - TM.getToken(LBrace->getTokenKey())->endLocation(), - RBraceLocInfo = - TM.getToken(RBrace->getTokenKey())->location(); - auto Range = toFoldingRange(SourceRange(LBraceLocInfo, RBraceLocInfo), - TM.sourceManager()); - // Do not generate folding range for compound statements without any - // nodes and newlines. - if (Range && Range->startLine != Range->endLine) - return Range; - } - return std::nullopt; -} - -// Traverse the tree and collect folding ranges along the way. -std::vector -collectFoldingRanges(const syntax::Node *Root, - const syntax::TokenBufferTokenManager &TM) { - std::queue Nodes; - Nodes.push(Root); - std::vector Result; - while (!Nodes.empty()) { - const syntax::Node *Node = Nodes.front(); - Nodes.pop(); - const auto Range = extractFoldingRange(Node, TM); - if (Range) - Result.push_back(*Range); - if (const auto *T = dyn_cast(Node)) - for (const auto *NextNode = T->getFirstChild(); NextNode; - NextNode = NextNode->getNextSibling()) - Nodes.push(NextNode); - } - return Result; -} - } // namespace llvm::Expected getSemanticRanges(ParsedAST &AST, Position Pos) { @@ -230,18 +164,6 @@ class PragmaRegionFinder { } }; -// FIXME(kirillbobyrev): Collect comments, PP conditional regions, includes and -// other code regions (e.g. public/private/protected sections of classes, -// control flow statement bodies). -// Related issue: https://github.com/clangd/clangd/issues/310 -llvm::Expected> getFoldingRanges(ParsedAST &AST) { - syntax::Arena A; - syntax::TokenBufferTokenManager TM(AST.getTokens(), AST.getLangOpts(), - AST.getSourceManager()); - const auto *SyntaxTree = syntax::buildSyntaxTree(A, TM, AST.getASTContext()); - return collectFoldingRanges(SyntaxTree, TM); -} - // FIXME( usaxena95): Collect includes and other code regions (e.g. // public/private/protected sections of classes, control flow statement bodies). // Related issue: https://github.com/clangd/clangd/issues/310 diff --git a/clang-tools-extra/clangd/SemanticSelection.h b/clang-tools-extra/clangd/SemanticSelection.h index dd9d3ea7e81d3..4e19397a0307a 100644 --- a/clang-tools-extra/clangd/SemanticSelection.h +++ b/clang-tools-extra/clangd/SemanticSelection.h @@ -26,10 +26,6 @@ namespace clangd { /// If pos is not in any interesting range, return [Pos, Pos). llvm::Expected getSemanticRanges(ParsedAST &AST, Position Pos); -/// Returns a list of ranges whose contents might be collapsible in an editor. -/// This should include large scopes, preprocessor blocks etc. -llvm::Expected> getFoldingRanges(ParsedAST &AST); - /// Returns a list of ranges whose contents might be collapsible in an editor. /// This version uses the pseudoparser which does not require the AST. llvm::Expected> diff --git a/clang-tools-extra/clangd/unittests/SemanticSelectionTests.cpp b/clang-tools-extra/clangd/unittests/SemanticSelectionTests.cpp index 2a381d1c8add5..31bb79495d013 100644 --- a/clang-tools-extra/clangd/unittests/SemanticSelectionTests.cpp +++ b/clang-tools-extra/clangd/unittests/SemanticSelectionTests.cpp @@ -196,76 +196,6 @@ TEST(SemanticSelection, RunViaClangdServer) { ElementsAre(SourceAnnotations.range("empty"))); } -TEST(FoldingRanges, ASTAll) { - const char *Tests[] = { - R"cpp( - #define FOO int foo() {\ - int Variable = 42; \ - return 0; \ - } - - // Do not generate folding range for braces within macro expansion. - FOO - - // Do not generate folding range within macro arguments. - #define FUNCTOR(functor) functor - void func() {[[ - FUNCTOR([](){}); - ]]} - - // Do not generate folding range with a brace coming from macro. - #define LBRACE { - void bar() LBRACE - int X = 42; - } - )cpp", - R"cpp( - void func() {[[ - int Variable = 100; - - if (Variable > 5) {[[ - Variable += 42; - ]]} else if (Variable++) - ++Variable; - else {[[ - Variable--; - ]]} - - // Do not generate FoldingRange for empty CompoundStmts. - for (;;) {} - - // If there are newlines between {}, we should generate one. - for (;;) {[[ - - ]]} - ]]} - )cpp", - R"cpp( - class Foo { - public: - Foo() {[[ - int X = 1; - ]]} - - private: - int getBar() {[[ - return 42; - ]]} - - // Braces are located at the same line: no folding range here. - void getFooBar() { } - }; - )cpp", - }; - for (const char *Test : Tests) { - auto T = Annotations(Test); - auto AST = TestTU::withCode(T.code()).build(); - EXPECT_THAT(gatherFoldingRanges(llvm::cantFail(getFoldingRanges(AST))), - UnorderedElementsAreArray(T.ranges())) - << Test; - } -} - TEST(FoldingRanges, PseudoParserWithoutLineFoldings) { const char *Tests[] = { R"cpp( diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 208683515e392..b31dc1ea820b3 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -12945,6 +12945,12 @@ def warn_target_clone_duplicate_options def warn_target_clone_no_impact_options : Warning<"version list contains entries that don't impact code generation">, InGroup; +def warn_version_priority_out_of_range + : Warning<"version priority '%0' is outside the allowed range [1-255]; ignoring priority">, + InGroup; +def warn_invalid_default_version_priority + : Warning<"priority of default version cannot be overridden; ignoring priority">, + InGroup; // three-way comparison operator diagnostics def err_implied_comparison_category_type_not_found : Error< diff --git a/clang/include/clang/Sema/SemaARM.h b/clang/include/clang/Sema/SemaARM.h index 1e8941a381dc5..af8e0e9047171 100644 --- a/clang/include/clang/Sema/SemaARM.h +++ b/clang/include/clang/Sema/SemaARM.h @@ -92,7 +92,8 @@ class SemaARM : public SemaBase { /// false otherwise. bool areLaxCompatibleSveTypes(QualType FirstType, QualType SecondType); - bool checkTargetVersionAttr(const StringRef Str, const SourceLocation Loc); + bool checkTargetVersionAttr(const StringRef Param, const SourceLocation Loc, + SmallString<64> &NewParam); bool checkTargetClonesAttr(SmallVectorImpl &Params, SmallVectorImpl &Locs, SmallVectorImpl> &NewParams); diff --git a/clang/include/clang/Sema/SemaRISCV.h b/clang/include/clang/Sema/SemaRISCV.h index 844cc3ce4a440..863b8a143f48a 100644 --- a/clang/include/clang/Sema/SemaRISCV.h +++ b/clang/include/clang/Sema/SemaRISCV.h @@ -56,7 +56,8 @@ class SemaRISCV : public SemaBase { std::unique_ptr IntrinsicManager; - bool checkTargetVersionAttr(const StringRef Param, const SourceLocation Loc); + bool checkTargetVersionAttr(const StringRef Param, const SourceLocation Loc, + SmallString<64> &NewParam); bool checkTargetClonesAttr(SmallVectorImpl &Params, SmallVectorImpl &Locs, SmallVectorImpl> &NewParams); diff --git a/clang/lib/CodeGen/Targets/AArch64.cpp b/clang/lib/CodeGen/Targets/AArch64.cpp index 74bf5531c942a..77b947e81f5fc 100644 --- a/clang/lib/CodeGen/Targets/AArch64.cpp +++ b/clang/lib/CodeGen/Targets/AArch64.cpp @@ -1359,9 +1359,10 @@ void AArch64ABIInfo::appendAttributeMangling(StringRef AttrStr, llvm::SmallDenseSet UniqueFeats; for (auto &Feat : Features) - if (auto Ext = llvm::AArch64::parseFMVExtension(Feat)) - if (UniqueFeats.insert(Ext->Name).second) - Out << 'M' << Ext->Name; + if (getTarget().doesFeatureAffectCodeGen(Feat)) + if (auto Ext = llvm::AArch64::parseFMVExtension(Feat)) + if (UniqueFeats.insert(Ext->Name).second) + Out << 'M' << Ext->Name; } std::unique_ptr diff --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp index a5164a94b57fa..81504b74c5e45 100644 --- a/clang/lib/Sema/SemaARM.cpp +++ b/clang/lib/Sema/SemaARM.cpp @@ -1593,19 +1593,54 @@ bool SemaARM::areLaxCompatibleSveTypes(QualType FirstType, IsLaxCompatible(SecondType, FirstType); } +static void appendFeature(StringRef Feat, SmallString<64> &Buffer) { + if (!Buffer.empty()) + Buffer.append("+"); + Buffer.append(Feat); +} + +static void convertPriorityString(unsigned Priority, + SmallString<64> &NewParam) { + StringRef PriorityString[8] = {"P0", "P1", "P2", "P3", + "P4", "P5", "P6", "P7"}; + + assert(Priority > 0 && Priority < 256 && "priority out of range"); + // Convert priority=[1-255] -> P0 + ... + P7 + for (unsigned BitPos = 0; BitPos < 8; ++BitPos) + if (Priority & (1U << BitPos)) + appendFeature(PriorityString[BitPos], NewParam); +} + bool SemaARM::checkTargetVersionAttr(const StringRef Param, - const SourceLocation Loc) { + const SourceLocation Loc, + SmallString<64> &NewParam) { using namespace DiagAttrParams; + auto [LHS, RHS] = Param.split(';'); + RHS = RHS.trim(); + bool IsDefault = false; llvm::SmallVector Features; - Param.split(Features, '+'); + LHS.split(Features, '+'); for (StringRef Feat : Features) { Feat = Feat.trim(); if (Feat == "default") - continue; - if (!getASTContext().getTargetInfo().validateCpuSupports(Feat)) + IsDefault = true; + else if (!getASTContext().getTargetInfo().validateCpuSupports(Feat)) return Diag(Loc, diag::warn_unsupported_target_attribute) << Unsupported << None << Feat << TargetVersion; + appendFeature(Feat, NewParam); + } + + if (!RHS.empty() && RHS.consume_front("priority=")) { + if (IsDefault) + Diag(Loc, diag::warn_invalid_default_version_priority); + else { + unsigned Digit; + if (RHS.getAsInteger(0, Digit) || Digit < 1 || Digit > 255) + Diag(Loc, diag::warn_version_priority_out_of_range) << RHS; + else + convertPriorityString(Digit, NewParam); + } } return false; } @@ -1627,15 +1662,21 @@ bool SemaARM::checkTargetClonesAttr( const StringRef Param = Params[I].trim(); const SourceLocation &Loc = Locs[I]; - if (Param.empty()) + auto [LHS, RHS] = Param.split(';'); + RHS = RHS.trim(); + bool HasPriority = !RHS.empty() && RHS.consume_front("priority="); + + if (LHS.empty()) return Diag(Loc, diag::warn_unsupported_target_attribute) << Unsupported << None << "" << TargetClones; - if (Param == "default") { + if (LHS == "default") { if (HasDefault) Diag(Loc, diag::warn_target_clone_duplicate_options); else { - NewParams.push_back(Param); + if (HasPriority) + Diag(Loc, diag::warn_invalid_default_version_priority); + NewParams.push_back(LHS); HasDefault = true; } continue; @@ -1644,7 +1685,7 @@ bool SemaARM::checkTargetClonesAttr( bool HasCodeGenImpact = false; llvm::SmallVector Features; llvm::SmallVector ValidFeatures; - Param.split(Features, '+'); + LHS.split(Features, '+'); for (StringRef Feat : Features) { Feat = Feat.trim(); if (!getASTContext().getTargetInfo().validateCpuSupports(Feat)) { @@ -1674,6 +1715,14 @@ bool SemaARM::checkTargetClonesAttr( continue; } + if (HasPriority) { + unsigned Digit; + if (RHS.getAsInteger(0, Digit) || Digit < 1 || Digit > 255) + Diag(Loc, diag::warn_version_priority_out_of_range) << RHS; + else + convertPriorityString(Digit, NewParam); + } + // Valid non-default argument. NewParams.push_back(NewParam); HasNonDefault = true; diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 81986264d5696..43f11e5595844 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -3445,19 +3445,20 @@ bool Sema::checkTargetAttr(SourceLocation LiteralLoc, StringRef AttrStr) { static void handleTargetVersionAttr(Sema &S, Decl *D, const ParsedAttr &AL) { StringRef Param; SourceLocation Loc; + SmallString<64> NewParam; if (!S.checkStringLiteralArgumentAttr(AL, 0, Param, &Loc)) return; if (S.Context.getTargetInfo().getTriple().isAArch64()) { - if (S.ARM().checkTargetVersionAttr(Param, Loc)) + if (S.ARM().checkTargetVersionAttr(Param, Loc, NewParam)) return; } else if (S.Context.getTargetInfo().getTriple().isRISCV()) { - if (S.RISCV().checkTargetVersionAttr(Param, Loc)) + if (S.RISCV().checkTargetVersionAttr(Param, Loc, NewParam)) return; } TargetVersionAttr *NewAttr = - ::new (S.Context) TargetVersionAttr(S.Context, AL, Param); + ::new (S.Context) TargetVersionAttr(S.Context, AL, NewParam); D->addAttr(NewAttr); } diff --git a/clang/lib/Sema/SemaRISCV.cpp b/clang/lib/Sema/SemaRISCV.cpp index 75dba8049a43c..cfe30fdc73ba1 100644 --- a/clang/lib/Sema/SemaRISCV.cpp +++ b/clang/lib/Sema/SemaRISCV.cpp @@ -1739,7 +1739,8 @@ bool SemaRISCV::isValidFMVExtension(StringRef Ext) { } bool SemaRISCV::checkTargetVersionAttr(const StringRef Param, - const SourceLocation Loc) { + const SourceLocation Loc, + SmallString<64> &NewParam) { using namespace DiagAttrParams; llvm::SmallVector AttrStrs; @@ -1785,6 +1786,7 @@ bool SemaRISCV::checkTargetVersionAttr(const StringRef Param, return Diag(Loc, diag::warn_unsupported_target_attribute) << Unsupported << None << Param << TargetVersion; + NewParam = Param; return false; } diff --git a/clang/test/AST/attr-target-version.c b/clang/test/AST/attr-target-version.c index b537f5e685a31..c216cd6d1a28a 100644 --- a/clang/test/AST/attr-target-version.c +++ b/clang/test/AST/attr-target-version.c @@ -2,7 +2,29 @@ int __attribute__((target_version("sve2-bitperm + sha2"))) foov(void) { return 1; } int __attribute__((target_clones(" lse + fp + sha3 ", "default"))) fooc(void) { return 2; } -// CHECK: TargetVersionAttr -// CHECK: sve2-bitperm + sha2 -// CHECK: TargetClonesAttr -// CHECK: fp+lse+sha3 default + +int __attribute__((target_version("aes;priority=1"))) explicit_priority(void) { return 1; } +int __attribute__((target_version("bf16;priority=2"))) explicit_priority(void) { return 2; } +int __attribute__((target_version("crc;priority=4"))) explicit_priority(void) { return 4; } +int __attribute__((target_version("dpb2;priority=8"))) explicit_priority(void) { return 8; } +int __attribute__((target_version("fp16fml;priority=16"))) explicit_priority(void) { return 16; } +int __attribute__((target_version("dotprod;priority=32"))) explicit_priority(void) { return 32; } +int __attribute__((target_version("sve;priority=64"))) explicit_priority(void) { return 64; } +int __attribute__((target_version("mops;priority=128"))) explicit_priority(void) { return 128; } + +int __attribute__((target_clones("simd;priority=255", "default"))) explicit_priority(void) { + return 0; +} + +// CHECK: TargetVersionAttr {{.*}} "sve2-bitperm+sha2" +// CHECK: TargetClonesAttr {{.*}} fp+lse+sha3 default + +// CHECK: TargetVersionAttr {{.*}} "aes+P0" +// CHECK: TargetVersionAttr {{.*}} "bf16+P1" +// CHECK: TargetVersionAttr {{.*}} "crc+P2" +// CHECK: TargetVersionAttr {{.*}} "dpb2+P3" +// CHECK: TargetVersionAttr {{.*}} "fp16fml+P4" +// CHECK: TargetVersionAttr {{.*}} "dotprod+P5" +// CHECK: TargetVersionAttr {{.*}} "sve+P6" +// CHECK: TargetVersionAttr {{.*}} "mops+P7" +// CHECK: TargetClonesAttr {{.*}} simd+P0+P1+P2+P3+P4+P5+P6+P7 default diff --git a/clang/test/CodeGen/AArch64/fmv-duplicate-mangled-name.c b/clang/test/CodeGen/AArch64/fmv-duplicate-mangled-name.c index e7e611e09542e..ebe5b75cf7946 100644 --- a/clang/test/CodeGen/AArch64/fmv-duplicate-mangled-name.c +++ b/clang/test/CodeGen/AArch64/fmv-duplicate-mangled-name.c @@ -1,5 +1,7 @@ // RUN: %clang_cc1 -triple aarch64-linux-gnu -verify -emit-llvm-only %s -DCHECK_IMPLICIT_DEFAULT // RUN: %clang_cc1 -triple aarch64-linux-gnu -verify -emit-llvm-only %s -DCHECK_EXPLICIT_DEFAULT +// RUN: %clang_cc1 -triple aarch64-linux-gnu -verify -emit-llvm-only %s -DCHECK_EXPLICIT_VERSION_PRIORITY +// RUN: %clang_cc1 -triple aarch64-linux-gnu -verify -emit-llvm-only %s -DCHECK_EXPLICIT_CLONES_PRIORITY #if defined(CHECK_IMPLICIT_DEFAULT) @@ -21,4 +23,18 @@ __attribute__((target_version("default"))) int explicit_default_bad(void) { retu // expected-note@-2 {{previous definition is here}} __attribute__((target_clones("aes", "lse", "default"))) int explicit_default_bad(void) { return 1; } +#elif defined(CHECK_EXPLICIT_VERSION_PRIORITY) + +__attribute__((target_version("aes"))) int explicit_version_priority(void) { return 0; } +// expected-error@+2 {{definition with same mangled name 'explicit_version_priority._Maes' as another definition}} +// expected-note@-2 {{previous definition is here}} +__attribute__((target_version("aes;priority=10"))) int explicit_version_priority(void) { return 1; } + +#elif defined(CHECK_EXPLICIT_CLONES_PRIORITY) + +__attribute__((target_version("aes;priority=20"))) int explicit_clones_priority(void) { return 0; } +// expected-error@+2 {{definition with same mangled name 'explicit_clones_priority._Maes' as another definition}} +// expected-note@-2 {{previous definition is here}} +__attribute__((target_clones("aes;priority=5", "lse"))) int explicit_clones_priority(void) { return 1; } + #endif diff --git a/clang/test/CodeGen/AArch64/fmv-explicit-priority.c b/clang/test/CodeGen/AArch64/fmv-explicit-priority.c new file mode 100644 index 0000000000000..b3c544124afa0 --- /dev/null +++ b/clang/test/CodeGen/AArch64/fmv-explicit-priority.c @@ -0,0 +1,146 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals --include-generated-funcs +// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s + +__attribute__((target_version("lse;priority=30"))) int foo(void) { return 1; } +__attribute__((target_version("aes;priority=20"))) int foo(void) { return 2; } +__attribute__((target_version("sve;priority=10"))) int foo(void) { return 3; } +__attribute__((target_version("default"))) int foo(void) { return 0; } + +__attribute__((target_clones("sme;priority=3", "bti;priority=2", "mops;priority=1", "default"))) int bar(void) { return 0; } +//. +// CHECK: @__aarch64_cpu_features = external dso_local global { i64 } +// CHECK: @foo = weak_odr ifunc i32 (), ptr @foo.resolver +// CHECK: @bar = weak_odr ifunc i32 (), ptr @bar.resolver +//. +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@foo._Mlse +// CHECK-SAME: () #[[ATTR0:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 1 +// +// +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@foo._Maes +// CHECK-SAME: () #[[ATTR1:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 2 +// +// +// CHECK: Function Attrs: noinline nounwind optnone vscale_range(1,16) +// CHECK-LABEL: define {{[^@]+}}@foo._Msve +// CHECK-SAME: () #[[ATTR2:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 3 +// +// +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@foo.default +// CHECK-SAME: () #[[ATTR3:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@bar._Msme +// CHECK-SAME: () #[[ATTR4:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@bar._Mbti +// CHECK-SAME: () #[[ATTR5:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@bar._Mmops +// CHECK-SAME: () #[[ATTR6:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK: Function Attrs: noinline nounwind optnone +// CHECK-LABEL: define {{[^@]+}}@bar.default +// CHECK-SAME: () #[[ATTR3]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK: Function Attrs: disable_sanitizer_instrumentation +// CHECK-LABEL: define {{[^@]+}}@foo.resolver +// CHECK-SAME: () #[[ATTR7:[0-9]+]] comdat { +// CHECK-NEXT: resolver_entry: +// CHECK-NEXT: call void @__init_cpu_features_resolver() +// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 128 +// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 128 +// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]] +// CHECK-NEXT: br i1 [[TMP3]], label [[RESOLVER_RETURN:%.*]], label [[RESOLVER_ELSE:%.*]] +// CHECK: resolver_return: +// CHECK-NEXT: ret ptr @foo._Mlse +// CHECK: resolver_else: +// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 33536 +// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 33536 +// CHECK-NEXT: [[TMP7:%.*]] = and i1 true, [[TMP6]] +// CHECK-NEXT: br i1 [[TMP7]], label [[RESOLVER_RETURN1:%.*]], label [[RESOLVER_ELSE2:%.*]] +// CHECK: resolver_return1: +// CHECK-NEXT: ret ptr @foo._Maes +// CHECK: resolver_else2: +// CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], 1073807616 +// CHECK-NEXT: [[TMP10:%.*]] = icmp eq i64 [[TMP9]], 1073807616 +// CHECK-NEXT: [[TMP11:%.*]] = and i1 true, [[TMP10]] +// CHECK-NEXT: br i1 [[TMP11]], label [[RESOLVER_RETURN3:%.*]], label [[RESOLVER_ELSE4:%.*]] +// CHECK: resolver_return3: +// CHECK-NEXT: ret ptr @foo._Msve +// CHECK: resolver_else4: +// CHECK-NEXT: ret ptr @foo.default +// +// +// CHECK: Function Attrs: disable_sanitizer_instrumentation +// CHECK-LABEL: define {{[^@]+}}@bar.resolver +// CHECK-SAME: () #[[ATTR7]] comdat { +// CHECK-NEXT: resolver_entry: +// CHECK-NEXT: call void @__init_cpu_features_resolver() +// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 4398180795136 +// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 4398180795136 +// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]] +// CHECK-NEXT: br i1 [[TMP3]], label [[RESOLVER_RETURN:%.*]], label [[RESOLVER_ELSE:%.*]] +// CHECK: resolver_return: +// CHECK-NEXT: ret ptr @bar._Msme +// CHECK: resolver_else: +// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 1125899906842624 +// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 1125899906842624 +// CHECK-NEXT: [[TMP7:%.*]] = and i1 true, [[TMP6]] +// CHECK-NEXT: br i1 [[TMP7]], label [[RESOLVER_RETURN1:%.*]], label [[RESOLVER_ELSE2:%.*]] +// CHECK: resolver_return1: +// CHECK-NEXT: ret ptr @bar._Mbti +// CHECK: resolver_else2: +// CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], 576460752303423488 +// CHECK-NEXT: [[TMP10:%.*]] = icmp eq i64 [[TMP9]], 576460752303423488 +// CHECK-NEXT: [[TMP11:%.*]] = and i1 true, [[TMP10]] +// CHECK-NEXT: br i1 [[TMP11]], label [[RESOLVER_RETURN3:%.*]], label [[RESOLVER_ELSE4:%.*]] +// CHECK: resolver_return3: +// CHECK-NEXT: ret ptr @bar._Mmops +// CHECK: resolver_else4: +// CHECK-NEXT: ret ptr @bar.default +// +//. +// CHECK: attributes #[[ATTR0]] = { noinline nounwind optnone "fmv-features"="P1,P2,P3,P4,lse" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+lse" } +// CHECK: attributes #[[ATTR1]] = { noinline nounwind optnone "fmv-features"="P2,P4,aes" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+aes,+fp-armv8,+neon" } +// CHECK: attributes #[[ATTR2]] = { noinline nounwind optnone vscale_range(1,16) "fmv-features"="P1,P3,sve" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve" } +// CHECK: attributes #[[ATTR3]] = { noinline nounwind optnone "fmv-features" "no-trapping-math"="true" "stack-protector-buffer-size"="8" } +// CHECK: attributes #[[ATTR4]] = { noinline nounwind optnone "fmv-features"="P0,P1,sme" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fp-armv8,+fullfp16,+neon,+sme" } +// CHECK: attributes #[[ATTR5]] = { noinline nounwind optnone "fmv-features"="P1,bti" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bti" } +// CHECK: attributes #[[ATTR6]] = { noinline nounwind optnone "fmv-features"="P0,mops" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+mops" } +// CHECK: attributes #[[ATTR7]] = { disable_sanitizer_instrumentation } +//. +// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4} +// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"} +//. diff --git a/clang/test/Sema/attr-target-clones-aarch64.c b/clang/test/Sema/attr-target-clones-aarch64.c index 93d87cef54569..e468fd83b57f3 100644 --- a/clang/test/Sema/attr-target-clones-aarch64.c +++ b/clang/test/Sema/attr-target-clones-aarch64.c @@ -80,3 +80,15 @@ int useage(void) { int __attribute__((target_clones("sve2-sha3+ssbs", "sm4"))) mv_after_use(void) { return 1; } // expected-error@+1 {{'main' cannot be a multiversioned function}} int __attribute__((target_clones("i8mm"))) main() { return 1; } + +int __attribute__((target_clones("aes + sve2 ; priority=100", "default"))) priority_whitespace(void) { return 0; } + +//expected-warning@+2 {{unsupported 'priority=10' in the 'target_clones' attribute string; 'target_clones' attribute ignored}} +//expected-warning@+1 {{version list contains entries that don't impact code generation}} +int __attribute__((target_clones("priority=10;aes", "default"))) priority_before_features(void) { return 0; } + +//expected-warning@+1 {{version priority '0' is outside the allowed range [1-255]; ignoring priority}} +int __attribute__((target_clones("aes;priority=0", "default"))) priority_out_of_range(void) { return 0; } + +//expected-warning@+1 {{priority of default version cannot be overridden; ignoring priority}} +int __attribute__((target_clones("aes", "default;priority=10"))) priority_default_version(void) { return 0; } diff --git a/clang/test/Sema/attr-target-version.c b/clang/test/Sema/attr-target-version.c index d062212848daf..29dfc3e864b0c 100644 --- a/clang/test/Sema/attr-target-version.c +++ b/clang/test/Sema/attr-target-version.c @@ -117,3 +117,14 @@ int unspec_args_implicit_default_first(); int __attribute__((target_version("aes"))) unspec_args_implicit_default_first() { return -1; } // expected-note@+1 {{function multiversioning caused by this declaration}} int __attribute__((target_version("default"))) unspec_args_implicit_default_first() { return 0; } + +int __attribute__((target_version("aes + sve2 ; priority=100"))) priority_whitespace(void) { return 0; } + +//expected-warning@+1 {{unsupported 'priority=10' in the 'target_version' attribute string; 'target_version' attribute ignored}} +int __attribute__((target_version("priority=10;aes"))) priority_before_features(void) { return 0; } + +//expected-warning@+1 {{version priority '256' is outside the allowed range [1-255]; ignoring priority}} +int __attribute__((target_version("aes;priority=256"))) priority_out_of_range(void) { return 0; } + +//expected-warning@+1 {{priority of default version cannot be overridden; ignoring priority}} +int __attribute__((target_version("default;priority=10"))) priority_default_version(void) { return 0; } diff --git a/flang-rt/lib/runtime/f90deviceio.f90 b/flang-rt/lib/runtime/f90deviceio.f90 new file mode 100644 index 0000000000000..abc0613f959ab --- /dev/null +++ b/flang-rt/lib/runtime/f90deviceio.f90 @@ -0,0 +1,31 @@ +! f90print f90printi f90printf f90printd interfaces +! in module file f90deviceio +module f90deviceio + interface + subroutine f90print(N) + character(*) :: N + !$omp declare target (f90print) + end subroutine f90print + subroutine f90printi(N,i) + character(*) :: N + integer :: i + !$omp declare target (f90printi) + end subroutine f90printi + subroutine f90printl(N,i) + character(*) :: N + integer(8) :: i + !$omp declare target (f90printl) + end subroutine f90printl + subroutine f90printf(N,f) + character(*) :: N + real(4) :: f + !$omp declare target (f90printf) + end subroutine f90printf + subroutine f90printd(N,d) + character(*) :: N + real(8) :: d + !$omp declare target (f90printd) + end subroutine f90printd + end interface +end module + diff --git a/lldb/docs/resources/contributing.rst b/lldb/docs/resources/contributing.rst index 7e84df41c3fbd..8da87684f39ee 100644 --- a/lldb/docs/resources/contributing.rst +++ b/lldb/docs/resources/contributing.rst @@ -90,19 +90,19 @@ dependency graph manageable, we still have some rules to govern these relationships: * All dependencies between plugins of the same kind must flow in the same - direction (if plugin `A1` depends on plugin `B1`, then `B2` must not depend on - `A2`) + direction (if plugin ``A1`` depends on plugin ``B1``, then ``B2`` must not depend on + ``A2``) * Dependency graph of plugin kinds must not contain loops (dependencies like - `A1->B1`, `B2->C2` and `C3->A3` are forbidden because they induce a cycle in + ``A1->B1``, ``B2->C2`` and ``C3->A3`` are forbidden because they induce a cycle in the plugin kind graph even though the plugins themselves are acyclical) The first of these rules is checked via CMake scripts (using the -`LLDB_ACCEPTABLE_PLUGIN_DEPENDENCIES` property). Dependencies in this category +``LLDB_ACCEPTABLE_PLUGIN_DEPENDENCIES`` property). Dependencies in this category are expected and permitted (subject to other constraints such as that dependency making sense for the particular pair of plugins). Unfortunately, due to historic reasons, not all plugin dependencies follow this rule, which is why we have -another category called `LLDB_TOLERATED_PLUGIN_DEPENDENCIES`. New dependencies +another category called ``LLDB_TOLERATED_PLUGIN_DEPENDENCIES``. New dependencies are forbidden (even though they are accepted by CMake) and existing ones should be removed wherever possible. diff --git a/lldb/docs/use/tutorials/creating-custom-breakpoints.md b/lldb/docs/use/tutorials/creating-custom-breakpoints.md index 04673c310ccf3..b31a600a7505a 100644 --- a/lldb/docs/use/tutorials/creating-custom-breakpoints.md +++ b/lldb/docs/use/tutorials/creating-custom-breakpoints.md @@ -20,7 +20,7 @@ happens when a location triggers and includes the commands, conditions, ignore counts, etc. Stop options are common between all breakpoint types, so for our purposes only the Searcher and Resolver are relevant. -### Breakpoint Searcher +## Breakpoint Searcher The Searcher's job is to traverse in a structured way the code in the current target. It proceeds from the Target, to search all the Modules in the Target, @@ -36,7 +36,7 @@ based search filter. If neither of these is specified, the breakpoint will have a no-op search filter, so all parts of the program are searched and all locations accepted. -### Breakpoint Resolver +## Breakpoint Resolver The Resolver has two functions: @@ -72,7 +72,7 @@ you add to the breakpoint yourself. Note that the Breakpoint takes care of deduplicating equal addresses in AddLocation, so you shouldn't need to worry about that anyway. -### Scripted Breakpoint Resolver +## Scripted Breakpoint Resolver At present, when adding a ScriptedBreakpoint type, you can only provide a custom Resolver, not a custom SearchFilter. @@ -127,7 +127,7 @@ of Modules and the list of CompileUnits that will make up the SearchFilter. If you pass in empty lists, the breakpoint will use the default "search everywhere,accept everything" filter. -### Providing Facade Locations: +## Providing Facade Locations: The breakpoint resolver interface also allows you to present a separate set of locations for the breakpoint than the ones that actually implement the diff --git a/lldb/docs/use/tutorials/custom-frame-recognizers.md b/lldb/docs/use/tutorials/custom-frame-recognizers.md index 17bf9637d9a85..e1f859bad3b8d 100644 --- a/lldb/docs/use/tutorials/custom-frame-recognizers.md +++ b/lldb/docs/use/tutorials/custom-frame-recognizers.md @@ -33,14 +33,14 @@ It's important to restrict the recognizer to the libc library (which is `libsystem_kernel.dylib` on macOS) to avoid matching functions with the same name in other modules: -```c++ +``` (lldb) command script import .../fd_recognizer.py (lldb) frame recognizer add -l fd_recognizer.LibcFdRecognizer -n read -s libsystem_kernel.dylib ``` When the program is stopped at the beginning of the 'read' function in libc, we can view the recognizer arguments in 'frame variable': -```c++ +``` (lldb) b read (lldb) r Process 1234 stopped diff --git a/lldb/docs/use/tutorials/implementing-standalone-scripts.md b/lldb/docs/use/tutorials/implementing-standalone-scripts.md index b1a3441ffe2ee..8143bb8990768 100644 --- a/lldb/docs/use/tutorials/implementing-standalone-scripts.md +++ b/lldb/docs/use/tutorials/implementing-standalone-scripts.md @@ -1,6 +1,6 @@ # Implementing Standalone Scripts -### Configuring `PYTHONPATH` +## Configuring `PYTHONPATH` LLDB has all of its core code built into a shared library which gets used by the `lldb` command line application. @@ -30,7 +30,7 @@ $ export PYTHONPATH=`lldb -P` Alternatively, you can append the LLDB Python directory to the sys.path list directly in your Python code before importing the lldb module. -### Initialization +## Initialization The standard test for `__main__`, like many python modules do, is useful for creating scripts that can be run from the command line. However, for command @@ -56,7 +56,7 @@ if __name__ == '__main__': lldb.SBDebugger.Terminate() ``` -### Example +## Example Now your python scripts are ready to import the lldb module. Below is a python script that will launch a program from the current working directory called @@ -133,7 +133,7 @@ if target: print(symbol) ``` -### Expected Output +## Expected Output Exact output varies by system, but you should see something like this: @@ -148,7 +148,7 @@ a.out[0x714]: mov w0, #0x0 ; =0 a.out[0x718]: ret ``` -### Troubleshooting +## Troubleshooting You can use all the usual Python tools to debug scripts, and on top of that you can enable LLDB's log channels. To do this in the script shown above, add diff --git a/lldb/docs/use/tutorials/script-driven-debugging.md b/lldb/docs/use/tutorials/script-driven-debugging.md index 55b90b1e25bf5..4fe3ef8281f84 100644 --- a/lldb/docs/use/tutorials/script-driven-debugging.md +++ b/lldb/docs/use/tutorials/script-driven-debugging.md @@ -12,7 +12,7 @@ This document will show how to do some of these things by going through an example, explaining how to use Python scripting to find a bug in a program that searches for text in a large binary tree. -### The Test Program and Input +## The Test Program and Input We have a simple C program ([dictionary.c](https://github.com/llvm/llvm-project/blob/main/lldb/examples/scripting/dictionary.c)) that reads in a text file, and stores all the words from the file in a @@ -24,7 +24,7 @@ the word in the tree. The input text file we are using to test our program contains the text for William Shakespeare's famous tragedy "Romeo and Juliet". -### The Bug +## The Bug When we try running our program, we find there is a problem. While it successfully finds some of the words we would expect to find, such as @@ -44,7 +44,7 @@ Enter search word: ^D $ ``` -### Using Depth First Search +## Using Depth First Search Our first job is to determine if the word "Romeo" actually got inserted into the tree or not. Since "Romeo and Juliet" has thousands of words, @@ -86,7 +86,7 @@ later explanations: 25: return DFS (right_child_ptr, word, cur_path) ``` -### Accessing & Manipulating Program Variables +## Accessing & Manipulating Program Variables Before we can call any Python function on any of our program's variables, we need to get the variable into a form that Python can @@ -126,7 +126,7 @@ information or children values out of SBValues. For complete information, see the header file SBValue.h. The `SBValue` methods that we use in our DFS function are `GetChildMemberWithName()`, `GetSummary()`, and `GetValue()`. -### Explaining DFS Script in Detail +## Explaining DFS Script in Detail Before diving into the details of this code, it would be best to give a high-level overview of what it does. The nodes in our binary search tree were @@ -166,13 +166,13 @@ start all over. Therefore we recommend doing as we have done: Writing your longer, more complicated script functions in a separate file (in this case tree_utils.py) and then importing it into your LLDB Python interpreter. -### The DFS Script in Action +## The DFS Script in Action At this point we are ready to use the DFS function to see if the word "Romeo" is in our tree or not. To actually use it in LLDB on our dictionary program, you would do something like this: -```c++ +``` $ lldb (lldb) process attach -n "dictionary" Architecture set to: x86_64. @@ -261,7 +261,7 @@ From this we can see that the word "Romeo" was indeed found in the tree, and the path from the root of the tree to the node containing "Romeo" is left-left-right-right-left. -### Using Breakpoint Command Scripts +## Using Breakpoint Command Scripts We are halfway to figuring out what the problem is. We know the word we are looking for is in the binary tree, and we know exactly where it is in the @@ -282,7 +282,7 @@ being hit. But if the decision differs from what the path says it should be, then the script prints out a message and does NOT resume execution, leaving the user sitting at the first point where a wrong decision is being made. -### Python Breakpoint Command Scripts Are Not What They Seem +## Python Breakpoint Command Scripts Are Not What They Seem What do we mean by that? When you enter a Python breakpoint command in LLDB, it appears that you are entering one or more plain lines of Python. BUT LLDB then @@ -305,7 +305,7 @@ automatically have a frame and a bp_loc variable. The variables are pre-loaded by LLDB with the correct context for the breakpoint. You do not have to use these variables, but they are there if you want them. -### The Decision Point Breakpoint Commands +## The Decision Point Breakpoint Commands This is what the Python breakpoint command script would look like for the decision to go right: @@ -358,7 +358,7 @@ execution. We allow the breakpoint to remain stopped (by doing nothing), and we print an informational message telling the user we have found the problem, and what the problem is. -### Actually Using The Breakpoint Commands +## Actually Using The Breakpoint Commands Now we will look at what happens when we actually use these breakpoint commands on our program. Doing a source list -n find_word shows us the function @@ -423,7 +423,7 @@ Enter your Python command(s). Type 'DONE' to end. > print "Here is the problem. Going right, should go left!" > DONE ``` -```c++ +``` (lldb) continue Process 696 resuming Here is the problem. Going right, should go left! @@ -480,7 +480,7 @@ case conversion problem somewhere in our program (we do). This is the end of our example on how you might use Python scripting in LLDB to help you find bugs in your program. -### Sources +## Sources The complete code for the Dictionary program (with case-conversion bug), the DFS function and other Python script examples used for this example are diff --git a/lldb/docs/use/tutorials/writing-custom-commands.md b/lldb/docs/use/tutorials/writing-custom-commands.md index d53b7e473a505..1ec6edf7a18c4 100644 --- a/lldb/docs/use/tutorials/writing-custom-commands.md +++ b/lldb/docs/use/tutorials/writing-custom-commands.md @@ -1,6 +1,6 @@ # Writing Custom Commands -### Create a new command using a Python function +## Create a new command using a Python function Python functions can be used to create new LLDB command interpreter commands, which will work like all the natively defined lldb commands. This provides a @@ -51,7 +51,7 @@ command definition form can't do the right thing. | `result` | `lldb.SBCommandReturnObject` | A return object which encapsulates success/failure information for the command and output text that needs to be printed as a result of the command. The plain Python "print" command also works but text won't go in the result by default (it is useful as a temporary logging facility). | | `internal_dict` | `python dict object` | The dictionary for the current embedded script session which contains all variables and functions. | -### Create a new command using a Python class +## Create a new command using a Python class Since lldb 3.7, Python commands can also be implemented by means of a class which should implement the following interface: @@ -103,7 +103,7 @@ print("my command does lots of cool stuff", file=result) `SBCommandReturnObject` and `SBStream` both support this file-like behavior by providing `write()` and `flush()` calls at the Python layer. -### Parsed Commands +## Parsed Commands The commands that are added using this class definition are what lldb calls "raw" commands. The command interpreter doesn't attempt to parse the command, @@ -207,7 +207,7 @@ Mostly useful for handle_completion where you get passed the long option. """ ``` -### Completion +## Completion lldb will handle completing your option names, and all your enum values automatically. If your option or argument types have associated built-in completers, @@ -280,7 +280,7 @@ You can optionally include a "descriptions" key, whose value is a parallel array of description strings, and the completion will show the description next to each completion. -### Loading Commands +## Loading Commands One other handy convenience when defining lldb command-line commands is the command "command script import" which will import a module specified by file @@ -309,7 +309,7 @@ def goodstuff(debugger, command, ctx, result, internal_dict): # Command Implementation code goes here ``` -### Examples +## Examples Now we can create a module called ls.py in the file ~/ls.py that will implement a function that can be used by LLDB's python command code: @@ -413,7 +413,7 @@ you may want a `pofoo` X command, that equates po [ModifyString(X) capitalizedString]. The following debugger interaction shows how to achieve that goal: -```python3 +``` (lldb) script Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D. >>> def pofoo_funct(debugger, command, result, internal_dict): diff --git a/lldb/docs/use/variable.rst b/lldb/docs/use/variable.rst index 212e5c5f8a140..b23b78ce2826c 100644 --- a/lldb/docs/use/variable.rst +++ b/lldb/docs/use/variable.rst @@ -367,7 +367,7 @@ Initially, we will focus on summary strings, and then describe the Python binding mechanism. Summary Format Matching On Pointers ----------------------- +----------------------------------- A summary formatter for a type ``T`` might or might not be appropriate to use for pointers to that type. If the formatter is only appropriate for the type and @@ -972,13 +972,13 @@ Being more specific, in case of exceptions, LLDB might assume that the given object has no children or it might skip printing some children, as they are printed one by one. -[1] The `max_children` argument is optional (since lldb 3.8.0) and indicates the +[1] The ``max_children`` argument is optional (since lldb 3.8.0) and indicates the maximum number of children that lldb is interested in (at this moment). If the computation of the number of children is expensive (for example, requires traversing a linked list to determine its size) your implementation may return -`max_children` rather than the actual number. If the computation is cheap (e.g., the +``max_children`` rather than the actual number. If the computation is cheap (e.g., the number is stored as a field of the object), then you can always return the true -number of children (that is, ignore the `max_children` argument). +number of children (that is, ignore the ``max_children`` argument). [2] This method is optional. Also, a boolean value must be returned (since lldb 3.1.0). If ``False`` is returned, then whenever the process reaches a new stop, diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h index 684f9a11d38be..1eaf35cae310e 100644 --- a/llvm/include/llvm-c/Core.h +++ b/llvm/include/llvm-c/Core.h @@ -3997,31 +3997,33 @@ LLVMGetPreviousDbgRecord(LLVMDbgRecordRef DbgRecord); * * @see llvm::DbgRecord::getDebugLoc() */ -LLVMMetadataRef LLVMDbgRecordGetDebugLoc(LLVMDbgRecordRef Rec); +LLVM_C_ABI LLVMMetadataRef LLVMDbgRecordGetDebugLoc(LLVMDbgRecordRef Rec); -LLVMDbgRecordKind LLVMDbgRecordGetKind(LLVMDbgRecordRef Rec); +LLVM_C_ABI LLVMDbgRecordKind LLVMDbgRecordGetKind(LLVMDbgRecordRef Rec); /** * Get the value of the DbgVariableRecord. * * @see llvm::DbgVariableRecord::getValue() */ -LLVMValueRef LLVMDbgVariableRecordGetValue(LLVMDbgRecordRef Rec, - unsigned OpIdx); +LLVM_C_ABI LLVMValueRef LLVMDbgVariableRecordGetValue(LLVMDbgRecordRef Rec, + unsigned OpIdx); /** * Get the debug info variable of the DbgVariableRecord. * * @see llvm::DbgVariableRecord::getVariable() */ -LLVMMetadataRef LLVMDbgVariableRecordGetVariable(LLVMDbgRecordRef Rec); +LLVM_C_ABI LLVMMetadataRef +LLVMDbgVariableRecordGetVariable(LLVMDbgRecordRef Rec); /** * Get the debug info expression of the DbgVariableRecord. * * @see llvm::DbgVariableRecord::getExpression() */ -LLVMMetadataRef LLVMDbgVariableRecordGetExpression(LLVMDbgRecordRef Rec); +LLVM_C_ABI LLVMMetadataRef +LLVMDbgVariableRecordGetExpression(LLVMDbgRecordRef Rec); /** * @defgroup LLVMCCoreValueInstructionCall Call Sites and Invocations diff --git a/llvm/include/llvm/Analysis/TargetTransformInfo.h b/llvm/include/llvm/Analysis/TargetTransformInfo.h index 99525607f744a..19d5fb0feb73e 100644 --- a/llvm/include/llvm/Analysis/TargetTransformInfo.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfo.h @@ -1975,9 +1975,13 @@ class TargetTransformInfo { LLVM_ABI bool hasArmWideBranch(bool Thumb) const; /// Returns a bitmask constructed from the target-features or fmv-features - /// metadata of a function. + /// metadata of a function corresponding to its Arch Extensions. LLVM_ABI APInt getFeatureMask(const Function &F) const; + /// Returns a bitmask constructed from the target-features or fmv-features + /// metadata of a function corresponding to its FMV priority. + LLVM_ABI APInt getPriorityMask(const Function &F) const; + /// Returns true if this is an instance of a function with multiple versions. LLVM_ABI bool isMultiversionedFunction(const Function &F) const; diff --git a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h index 835eb7701ccfa..da104ffe0a6e6 100644 --- a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h @@ -1130,6 +1130,10 @@ class TargetTransformInfoImplBase { return APInt::getZero(32); } + virtual APInt getPriorityMask(const Function &F) const { + return APInt::getZero(32); + } + virtual bool isMultiversionedFunction(const Function &F) const { return false; } diff --git a/llvm/include/llvm/CAS/ActionCache.h b/llvm/include/llvm/CAS/ActionCache.h index 2981fd6d18b5a..536e36f6fecd6 100644 --- a/llvm/include/llvm/CAS/ActionCache.h +++ b/llvm/include/llvm/CAS/ActionCache.h @@ -33,7 +33,7 @@ class CacheKey { public: StringRef getKey() const { return Key; } - CacheKey(const CASID &ID); + LLVM_ABI CacheKey(const CASID &ID); LLVM_ABI_FOR_TEST CacheKey(const ObjectProxy &Proxy); CacheKey(const ObjectStore &CAS, const ObjectRef &Ref); diff --git a/llvm/include/llvm/CAS/BuiltinUnifiedCASDatabases.h b/llvm/include/llvm/CAS/BuiltinUnifiedCASDatabases.h index 6368fca4f7072..0ac9386f1cda1 100644 --- a/llvm/include/llvm/CAS/BuiltinUnifiedCASDatabases.h +++ b/llvm/include/llvm/CAS/BuiltinUnifiedCASDatabases.h @@ -51,6 +51,7 @@ enum class ValidationResult { /// was invalid but has been cleared, \c Skipped if validation is not needed, /// or an \c Error if validation cannot be performed or if the data is left /// in an invalid state because \p AllowRecovery is false. +LLVM_ABI Expected validateOnDiskUnifiedCASDatabasesIfNeeded( StringRef Path, bool CheckHash, bool AllowRecovery, bool ForceValidation, std::optional LLVMCasBinaryPath); diff --git a/llvm/include/llvm/CAS/ObjectStore.h b/llvm/include/llvm/CAS/ObjectStore.h index 22562133ece93..2e5b939404e42 100644 --- a/llvm/include/llvm/CAS/ObjectStore.h +++ b/llvm/include/llvm/CAS/ObjectStore.h @@ -251,7 +251,8 @@ class ObjectStore { /// Import object from another CAS. This will import the full tree from the /// other CAS. - Expected importObject(ObjectStore &Upstream, ObjectRef Other); + LLVM_ABI Expected importObject(ObjectStore &Upstream, + ObjectRef Other); /// Print the ObjectStore internals for debugging purpose. virtual void print(raw_ostream &) const {} diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.h b/llvm/include/llvm/IR/RuntimeLibcalls.h index 41fe448382992..fa092909d630d 100644 --- a/llvm/include/llvm/IR/RuntimeLibcalls.h +++ b/llvm/include/llvm/IR/RuntimeLibcalls.h @@ -80,7 +80,7 @@ struct RuntimeLibcallsInfo { RuntimeLibcallsInfo() = default; - explicit RuntimeLibcallsInfo( + LLVM_ABI explicit RuntimeLibcallsInfo( const Triple &TT, ExceptionHandling ExceptionModel = ExceptionHandling::None, FloatABI::ABIType FloatABI = FloatABI::Default, @@ -89,8 +89,8 @@ struct RuntimeLibcallsInfo { explicit RuntimeLibcallsInfo(const Module &M); - bool invalidate(Module &M, const PreservedAnalyses &PA, - ModuleAnalysisManager::Invalidator &); + LLVM_ABI bool invalidate(Module &M, const PreservedAnalyses &PA, + ModuleAnalysisManager::Invalidator &); /// Get the libcall routine name for the specified libcall implementation. static StringRef getLibcallImplName(RTLIB::LibcallImpl CallImpl) { diff --git a/llvm/include/llvm/SandboxIR/Instruction.h b/llvm/include/llvm/SandboxIR/Instruction.h index d928068f0bf27..95e59a49125c5 100644 --- a/llvm/include/llvm/SandboxIR/Instruction.h +++ b/llvm/include/llvm/SandboxIR/Instruction.h @@ -1901,8 +1901,8 @@ class SwitchInst : public SingleLLVMInstructionImpl { public: CaseHandleImpl(Context &Ctx, LLVMCaseItT LLVMCaseIt) : Ctx(Ctx), LLVMCaseIt(LLVMCaseIt) {} - ConstT *getCaseValue() const; - BlockT *getCaseSuccessor() const; + LLVM_ABI_FOR_TEST ConstT *getCaseValue() const; + LLVM_ABI_FOR_TEST BlockT *getCaseSuccessor() const; unsigned getCaseIndex() const { const auto &LLVMCaseHandle = *LLVMCaseIt; return LLVMCaseHandle.getCaseIndex(); diff --git a/llvm/include/llvm/TargetParser/AArch64FeatPriorities.inc b/llvm/include/llvm/TargetParser/AArch64FeatPriorities.inc index f2bad28ada93e..f0291926bbe75 100644 --- a/llvm/include/llvm/TargetParser/AArch64FeatPriorities.inc +++ b/llvm/include/llvm/TargetParser/AArch64FeatPriorities.inc @@ -59,7 +59,16 @@ enum FeatPriorities { PRIOR_SME_I64, PRIOR_SME2, PRIOR_MOPS, - PRIOR_CSSC + PRIOR_CSSC, + PRIOR_MAX, + PRIOR_P0 = 120, + PRIOR_P1, + PRIOR_P2, + PRIOR_P3, + PRIOR_P4, + PRIOR_P5, + PRIOR_P6, + PRIOR_P7 }; #endif diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h index 7da529e2e8a87..224bcaf79412d 100644 --- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h +++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h @@ -41,6 +41,8 @@ struct CpuInfo; static_assert(FEAT_MAX < 62, "Number of features in CPUFeatures are limited to 62 entries"); +static_assert(PRIOR_MAX < 120, "FeatPriorities is limited to 120 entries"); + // Each ArchExtKind correponds directly to a possible -target-feature. #define EMIT_ARCHEXTKIND_ENUM #include "llvm/TargetParser/AArch64TargetParserDef.inc" @@ -71,11 +73,12 @@ struct ExtensionInfo { struct FMVInfo { StringRef Name; // The target_version/target_clones spelling. - CPUFeatures FeatureBit; // Index of the bit in the FMV feature bitset. + std::optional + FeatureBit; // Index of the bit in the FMV feature bitset. FeatPriorities PriorityBit; // Index of the bit in the FMV priority bitset. std::optional ID; // The architecture extension to enable. - FMVInfo(StringRef Name, CPUFeatures FeatureBit, FeatPriorities PriorityBit, - std::optional ID) + FMVInfo(StringRef Name, std::optional FeatureBit, + FeatPriorities PriorityBit, std::optional ID) : Name(Name), FeatureBit(FeatureBit), PriorityBit(PriorityBit), ID(ID) {}; }; diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp index c529d87502acd..6201f6a2acbf3 100644 --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -1434,6 +1434,10 @@ APInt TargetTransformInfo::getFeatureMask(const Function &F) const { return TTIImpl->getFeatureMask(F); } +APInt TargetTransformInfo::getPriorityMask(const Function &F) const { + return TTIImpl->getPriorityMask(F); +} + bool TargetTransformInfo::isMultiversionedFunction(const Function &F) const { return TTIImpl->isMultiversionedFunction(F); } diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index a573d20098b2c..19562937fc37c 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -3304,7 +3304,7 @@ Error BitcodeReader::parseConstants() { case bitc::CST_CODE_INTEGER: // INTEGER: [intval] if (!CurTy->isIntOrIntVectorTy() || Record.empty()) return error("Invalid integer const record"); - V = ConstantInt::get(CurTy, decodeSignRotatedValue(Record[0])); + V = ConstantInt::getSigned(CurTy, decodeSignRotatedValue(Record[0])); break; case bitc::CST_CODE_WIDE_INTEGER: {// WIDE_INTEGER: [n x intval] if (!CurTy->isIntOrIntVectorTy() || Record.empty()) diff --git a/llvm/lib/CodeGen/SjLjEHPrepare.cpp b/llvm/lib/CodeGen/SjLjEHPrepare.cpp index 294b3de46966f..5856efcd549a8 100644 --- a/llvm/lib/CodeGen/SjLjEHPrepare.cpp +++ b/llvm/lib/CodeGen/SjLjEHPrepare.cpp @@ -139,7 +139,7 @@ void SjLjEHPrepareImpl::insertCallSiteStore(Instruction *I, int Number) { Builder.CreateGEP(FunctionContextTy, FuncCtx, Idxs, "call_site"); // Insert a store of the call-site number - ConstantInt *CallSiteNoC = ConstantInt::get(DataTy, Number); + ConstantInt *CallSiteNoC = ConstantInt::getSigned(DataTy, Number); Builder.CreateStore(CallSiteNoC, CallSite, true /*volatile*/); } diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp index 27d9888ca8070..79cb8992e6634 100644 --- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp @@ -5315,7 +5315,7 @@ OpenMPIRBuilder::applyStaticChunkedWorkshareLoop( bool NeedsBarrier, Value *ChunkSize, OMPScheduleType SchedType, Value *DistScheduleChunkSize, OMPScheduleType DistScheduleSchedType) { assert(CLI->isValid() && "Requires a valid canonical loop"); - assert(ChunkSize || DistScheduleChunkSize && "Chunk size is required"); + assert((ChunkSize || DistScheduleChunkSize) && "Chunk size is required"); LLVMContext &Ctx = CLI->getFunction()->getContext(); Value *IV = CLI->getIndVar(); diff --git a/llvm/lib/Target/AArch64/AArch64FMV.td b/llvm/lib/Target/AArch64/AArch64FMV.td index b0f76ec6a6480..12939997401ac 100644 --- a/llvm/lib/Target/AArch64/AArch64FMV.td +++ b/llvm/lib/Target/AArch64/AArch64FMV.td @@ -83,3 +83,14 @@ def : FMVExtension<"sve2-sha3", "SVE_SHA3">; def : FMVExtension<"sve2-sm4", "SVE_SM4">; def : FMVExtension<"wfxt", "WFXT">; def : FMVExtension<"cssc", "CSSC">; + +// Extensions which allow the user to override version priority. +// 8-bits allow 256-1 priority levels (excluding all zeros). +def : FMVExtension<"P0", "P0">; +def : FMVExtension<"P1", "P1">; +def : FMVExtension<"P2", "P2">; +def : FMVExtension<"P3", "P3">; +def : FMVExtension<"P4", "P4">; +def : FMVExtension<"P5", "P5">; +def : FMVExtension<"P6", "P6">; +def : FMVExtension<"P7", "P7">; diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index d1441a744eee8..e140aabb9bbeb 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -29759,12 +29759,26 @@ AArch64TargetLowering::shouldExpandAtomicRMWInIR(AtomicRMWInst *AI) const { AI->getOperation() == AtomicRMWInst::FMinimum)) return AtomicExpansionKind::None; - // Nand is not supported in LSE. // Leave 128 bits to LLSC or CmpXChg. - if (AI->getOperation() != AtomicRMWInst::Nand && Size < 128 && - !AI->isFloatingPointOperation()) { - if (Subtarget->hasLSE()) - return AtomicExpansionKind::None; + if (Size < 128 && !AI->isFloatingPointOperation()) { + if (Subtarget->hasLSE()) { + // Nand is not supported in LSE. + switch (AI->getOperation()) { + case AtomicRMWInst::Xchg: + case AtomicRMWInst::Add: + case AtomicRMWInst::Sub: + case AtomicRMWInst::And: + case AtomicRMWInst::Or: + case AtomicRMWInst::Xor: + case AtomicRMWInst::Max: + case AtomicRMWInst::Min: + case AtomicRMWInst::UMax: + case AtomicRMWInst::UMin: + return AtomicExpansionKind::None; + default: + break; + } + } if (Subtarget->outlineAtomics()) { // [U]Min/[U]Max RWM atomics are used in __sync_fetch_ libcalls so far. // Don't outline them unless diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td index 0cbe867497625..7ee094ad4ac87 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td @@ -6841,6 +6841,49 @@ defm : FPToIntegerPats; defm : FPToIntegerPats; +let Predicates = [HasFPRCVT] in { + def : Pat<(f32 (bitconvert (i32 (any_lround f16:$Rn)))), + (FCVTASSHr f16:$Rn)>; + def : Pat<(f64 (bitconvert (i64 (any_lround f16:$Rn)))), + (FCVTASDHr f16:$Rn)>; + def : Pat<(f64 (bitconvert (i64 (any_llround f16:$Rn)))), + (FCVTASDHr f16:$Rn)>; + def : Pat<(f64 (bitconvert (i64 (any_lround f32:$Rn)))), + (FCVTASDSr f32:$Rn)>; + def : Pat<(f32 (bitconvert (i32 (any_lround f64:$Rn)))), + (FCVTASSDr f64:$Rn)>; + def : Pat<(f64 (bitconvert (i64 (any_llround f32:$Rn)))), + (FCVTASDSr f32:$Rn)>; +} +def : Pat<(f32 (bitconvert (i32 (any_lround f32:$Rn)))), + (FCVTASv1i32 f32:$Rn)>; +def : Pat<(f64 (bitconvert (i64 (any_lround f64:$Rn)))), + (FCVTASv1i64 f64:$Rn)>; +def : Pat<(f64 (bitconvert (i64 (any_llround f64:$Rn)))), + (FCVTASv1i64 f64:$Rn)>; + +let Predicates = [HasFPRCVT] in { + def : Pat<(f32 (bitconvert (i32 (any_lrint f16:$Rn)))), + (FCVTZSSHr (FRINTXHr f16:$Rn))>; + def : Pat<(f64 (bitconvert (i64 (any_lrint f16:$Rn)))), + (FCVTZSDHr (FRINTXHr f16:$Rn))>; + def : Pat<(f64 (bitconvert (i64 (any_llrint f16:$Rn)))), + (FCVTZSDHr (FRINTXHr f16:$Rn))>; + def : Pat<(f64 (bitconvert (i64 (any_lrint f32:$Rn)))), + (FCVTZSDSr (FRINTXSr f32:$Rn))>; + def : Pat<(f32 (bitconvert (i32 (any_lrint f64:$Rn)))), + (FCVTZSSDr (FRINTXDr f64:$Rn))>; + def : Pat<(f64 (bitconvert (i64 (any_llrint f32:$Rn)))), + (FCVTZSDSr (FRINTXSr f32:$Rn))>; +} +def : Pat<(f32 (bitconvert (i32 (any_lrint f32:$Rn)))), + (FCVTZSv1i32 (FRINTXSr f32:$Rn))>; +def : Pat<(f64 (bitconvert (i64 (any_lrint f64:$Rn)))), + (FCVTZSv1i64 (FRINTXDr f64:$Rn))>; +def : Pat<(f64 (bitconvert (i64 (any_llrint f64:$Rn)))), + (FCVTZSv1i64 (FRINTXDr f64:$Rn))>; + + // f16 -> s16 conversions let Predicates = [HasFullFP16] in { def : Pat<(i16(fp_to_sint_sat_gi f16:$Rn)), (FCVTZSv1f16 f16:$Rn)>; diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp index 4bc98c742c33f..043be554f8441 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -252,12 +252,23 @@ static bool hasPossibleIncompatibleOps(const Function *F, return false; } -APInt AArch64TTIImpl::getFeatureMask(const Function &F) const { +static void extractAttrFeatures(const Function &F, const AArch64TTIImpl *TTI, + SmallVectorImpl &Features) { StringRef AttributeStr = - isMultiversionedFunction(F) ? "fmv-features" : "target-features"; + TTI->isMultiversionedFunction(F) ? "fmv-features" : "target-features"; StringRef FeatureStr = F.getFnAttribute(AttributeStr).getValueAsString(); - SmallVector Features; FeatureStr.split(Features, ","); +} + +APInt AArch64TTIImpl::getFeatureMask(const Function &F) const { + SmallVector Features; + extractAttrFeatures(F, this, Features); + return AArch64::getCpuSupportsMask(Features); +} + +APInt AArch64TTIImpl::getPriorityMask(const Function &F) const { + SmallVector Features; + extractAttrFeatures(F, this, Features); return AArch64::getFMVPriority(Features); } diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h index 7ca8482e152d1..ecefe2a7f1380 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h @@ -98,6 +98,7 @@ class AArch64TTIImpl final : public BasicTTIImplBase { unsigned DefaultCallPenalty) const override; APInt getFeatureMask(const Function &F) const override; + APInt getPriorityMask(const Function &F) const override; bool isMultiversionedFunction(const Function &F) const override; diff --git a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td index d78c4c707d168..a74d05dc00ae5 100644 --- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td @@ -1364,16 +1364,10 @@ class WMMAOpcodeMapping { field bit is_wmma_xdl; } -def WMMAOpcode : GenericEnum { - let FilterClass = "VOP3P_Pseudo"; -} - class WMMAMappingTable : GenericTable { let FilterClass = "WMMAOpcodeMapping"; let CppTypeName = "WMMAOpcodeMappingInfo"; let Fields = ["Opcode2Addr", "Opcode3Addr"]; - string TypeOf_Opcode2Addr = "WMMAOpcode"; - string TypeOf_Opcode3Addr = "WMMAOpcode"; } def WMMAOpcode2AddrMappingTable : WMMAMappingTable { diff --git a/llvm/lib/Target/ARM/ThumbRegisterInfo.cpp b/llvm/lib/Target/ARM/ThumbRegisterInfo.cpp index 12875c233312a..85e705d4c5e24 100644 --- a/llvm/lib/Target/ARM/ThumbRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ThumbRegisterInfo.cpp @@ -66,8 +66,8 @@ static void emitThumb1LoadConstPool(MachineBasicBlock &MBB, const ARMSubtarget &STI = MF.getSubtarget(); const TargetInstrInfo &TII = *STI.getInstrInfo(); MachineConstantPool *ConstantPool = MF.getConstantPool(); - const Constant *C = ConstantInt::get( - Type::getInt32Ty(MBB.getParent()->getFunction().getContext()), Val); + const Constant *C = ConstantInt::getSigned( + Type::getInt32Ty(MBB.getParent()->getFunction().getContext()), Val); unsigned Idx = ConstantPool->getConstantPoolIndex(C, Align(4)); BuildMI(MBB, MBBI, dl, TII.get(ARM::tLDRpci)) @@ -85,8 +85,8 @@ static void emitThumb2LoadConstPool(MachineBasicBlock &MBB, MachineFunction &MF = *MBB.getParent(); const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); MachineConstantPool *ConstantPool = MF.getConstantPool(); - const Constant *C = ConstantInt::get( - Type::getInt32Ty(MBB.getParent()->getFunction().getContext()), Val); + const Constant *C = ConstantInt::getSigned( + Type::getInt32Ty(MBB.getParent()->getFunction().getContext()), Val); unsigned Idx = ConstantPool->getConstantPoolIndex(C, Align(4)); BuildMI(MBB, MBBI, dl, TII.get(ARM::t2LDRpci)) diff --git a/llvm/lib/Target/Hexagon/HexagonGenWideningVecInstr.cpp b/llvm/lib/Target/Hexagon/HexagonGenWideningVecInstr.cpp index 478eaf10b0710..297410b3ad828 100644 --- a/llvm/lib/Target/Hexagon/HexagonGenWideningVecInstr.cpp +++ b/llvm/lib/Target/Hexagon/HexagonGenWideningVecInstr.cpp @@ -117,9 +117,9 @@ class HexagonGenWideningVecInstr : public FunctionPass { bool IsResSigned); bool genVAvg(Instruction *Inst); bool checkConstantVector(Value *OP, int64_t &SplatVal, bool IsOPZExt); - void updateMPYConst(Intrinsic::ID IntId, int64_t &SplatVal, bool IsOPZExt, + void updateMPYConst(Intrinsic::ID IntId, int64_t SplatVal, bool IsOPZExt, Value *&OP, IRBuilder<> &IRB); - void packConstant(Intrinsic::ID IntId, int64_t &SplatVal, Value *&OP, + void packConstant(Intrinsic::ID IntId, int64_t SplatVal, Value *&OP, IRBuilder<> &IRB); }; @@ -484,20 +484,17 @@ bool HexagonGenWideningVecInstr::checkConstantVector(Value *OP, } void HexagonGenWideningVecInstr::updateMPYConst(Intrinsic::ID IntId, - int64_t &SplatVal, - bool IsOPZExt, Value *&OP, - IRBuilder<> &IRB) { + int64_t SplatVal, bool IsOPZExt, + Value *&OP, IRBuilder<> &IRB) { if ((IntId == Intrinsic::hexagon_vmpy_uu || IntId == Intrinsic::hexagon_vmpy_us || IntId == Intrinsic::hexagon_vmpy_su || IntId == Intrinsic::hexagon_vmpy_ss) && OP->getType()->isVectorTy()) { // Create a vector with all elements equal to SplatVal - auto *VecTy = cast(OP->getType()); - Value *scalar = IRB.getIntN(VecTy->getScalarSizeInBits(), - static_cast(SplatVal)); - Value *splatVector = ConstantVector::getSplat(VecTy->getElementCount(), - cast(scalar)); + Type *VecTy = OP->getType(); + Value *splatVector = + ConstantInt::get(VecTy, static_cast(SplatVal)); OP = IsOPZExt ? IRB.CreateZExt(splatVector, VecTy) : IRB.CreateSExt(splatVector, VecTy); } else { @@ -506,7 +503,7 @@ void HexagonGenWideningVecInstr::updateMPYConst(Intrinsic::ID IntId, } void HexagonGenWideningVecInstr::packConstant(Intrinsic::ID IntId, - int64_t &SplatVal, Value *&OP, + int64_t SplatVal, Value *&OP, IRBuilder<> &IRB) { uint32_t Val32 = static_cast(SplatVal); if (IntId == Intrinsic::hexagon_vmpy_ub_ub) { diff --git a/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp b/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp index 84176ae3fb03a..2813b1d3b210a 100644 --- a/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp +++ b/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp @@ -120,10 +120,6 @@ class HexagonVectorCombine { size_t length(Value *Val) const; size_t length(Type *Ty) const; - Constant *getNullValue(Type *Ty) const; - Constant *getFullValue(Type *Ty) const; - Constant *getConstSplat(Type *Ty, int Val) const; - Value *simplify(Value *Val) const; Value *insertb(IRBuilderBase &Builder, Value *Dest, Value *Src, int Start, @@ -682,8 +678,8 @@ auto AlignVectors::getMask(Value *Val) const -> Value * { Type *ValTy = getPayload(Val)->getType(); if (auto *VecTy = dyn_cast(ValTy)) - return HVC.getFullValue(HVC.getBoolTy(HVC.length(VecTy))); - return HVC.getFullValue(HVC.getBoolTy()); + return Constant::getAllOnesValue(HVC.getBoolTy(HVC.length(VecTy))); + return Constant::getAllOnesValue(HVC.getBoolTy()); } auto AlignVectors::getPassThrough(Value *Val) const -> Value * { @@ -1122,7 +1118,7 @@ auto AlignVectors::realignLoadGroup(IRBuilderBase &Builder, BasicBlock *BaseBlock = Builder.GetInsertBlock(); ByteSpan ASpan; - auto *True = HVC.getFullValue(HVC.getBoolTy(ScLen)); + auto *True = Constant::getAllOnesValue(HVC.getBoolTy(ScLen)); auto *Undef = UndefValue::get(SecTy); // Created load does not have to be "Instruction" (e.g. "undef"). @@ -1349,7 +1345,7 @@ auto AlignVectors::realignStoreGroup(IRBuilderBase &Builder, ByteSpan VSection = VSpan.section(Index * ScLen, ScLen).shift(-Index * ScLen); Value *Undef = UndefValue::get(SecTy); - Value *Zero = HVC.getNullValue(SecTy); + Value *Zero = Constant::getNullValue(SecTy); Value *AccumV = Undef; Value *AccumM = Zero; for (ByteSpan::Block &S : VSection) { @@ -2699,11 +2695,11 @@ auto HvxIdioms::processFxpMulChopped(IRBuilderBase &Builder, Instruction &In, // Do full-precision multiply and shift. Value *Prod32 = createMul16(Builder, Op.X, Op.Y); if (Rounding) { - Value *RoundVal = HVC.getConstSplat(Prod32->getType(), 1 << *Op.RoundAt); + Value *RoundVal = ConstantInt::get(Prod32->getType(), 1 << *Op.RoundAt); Prod32 = Builder.CreateAdd(Prod32, RoundVal, "add"); } - Value *ShiftAmt = HVC.getConstSplat(Prod32->getType(), Op.Frac); + Value *ShiftAmt = ConstantInt::get(Prod32->getType(), Op.Frac); Value *Shifted = Op.X.Sgn == Signed || Op.Y.Sgn == Signed ? Builder.CreateAShr(Prod32, ShiftAmt, "asr") : Builder.CreateLShr(Prod32, ShiftAmt, "lsr"); @@ -2722,10 +2718,10 @@ auto HvxIdioms::processFxpMulChopped(IRBuilderBase &Builder, Instruction &In, // Add the optional rounding to the proper word. if (Op.RoundAt.has_value()) { - Value *Zero = HVC.getNullValue(WordX[0]->getType()); + Value *Zero = Constant::getNullValue(WordX[0]->getType()); SmallVector RoundV(WordP.size(), Zero); RoundV[*Op.RoundAt / 32] = - HVC.getConstSplat(HvxWordTy, 1 << (*Op.RoundAt % 32)); + ConstantInt::get(HvxWordTy, 1 << (*Op.RoundAt % 32)); WordP = createAddLong(Builder, WordP, RoundV); } @@ -2733,7 +2729,7 @@ auto HvxIdioms::processFxpMulChopped(IRBuilderBase &Builder, Instruction &In, // Shift all products right by Op.Frac. unsigned SkipWords = Op.Frac / 32; - Constant *ShiftAmt = HVC.getConstSplat(HvxWordTy, Op.Frac % 32); + Constant *ShiftAmt = ConstantInt::get(HvxWordTy, Op.Frac % 32); for (int Dst = 0, End = WordP.size() - SkipWords; Dst != End; ++Dst) { int Src = Dst + SkipWords; @@ -2802,7 +2798,7 @@ auto HvxIdioms::createAddCarry(IRBuilderBase &Builder, Value *X, Value *Y, } else { AddCarry = HVC.HST.getIntrinsicId(Hexagon::V6_vaddcarry); if (CarryIn == nullptr) - CarryIn = HVC.getNullValue(HVC.getBoolTy(HVC.length(VecTy))); + CarryIn = Constant::getNullValue(HVC.getBoolTy(HVC.length(VecTy))); Args.push_back(CarryIn); } Value *Ret = HVC.createHvxIntrinsic(Builder, AddCarry, @@ -2950,7 +2946,7 @@ auto HvxIdioms::createMulLong(IRBuilderBase &Builder, ArrayRef WordX, } } - Value *Zero = HVC.getNullValue(WordX[0]->getType()); + Value *Zero = Constant::getNullValue(WordX[0]->getType()); auto pop_back_or_zero = [Zero](auto &Vector) -> Value * { if (Vector.empty()) @@ -3146,33 +3142,6 @@ auto HexagonVectorCombine::length(Type *Ty) const -> size_t { return VecTy->getElementCount().getFixedValue(); } -auto HexagonVectorCombine::getNullValue(Type *Ty) const -> Constant * { - assert(Ty->isIntOrIntVectorTy()); - auto Zero = ConstantInt::get(Ty->getScalarType(), 0); - if (auto *VecTy = dyn_cast(Ty)) - return ConstantVector::getSplat(VecTy->getElementCount(), Zero); - return Zero; -} - -auto HexagonVectorCombine::getFullValue(Type *Ty) const -> Constant * { - assert(Ty->isIntOrIntVectorTy()); - auto Minus1 = ConstantInt::getAllOnesValue(Ty->getScalarType()); - if (auto *VecTy = dyn_cast(Ty)) - return ConstantVector::getSplat(VecTy->getElementCount(), Minus1); - return Minus1; -} - -auto HexagonVectorCombine::getConstSplat(Type *Ty, int Val) const - -> Constant * { - assert(Ty->isVectorTy()); - auto VecTy = cast(Ty); - Type *ElemTy = VecTy->getElementType(); - // Add support for floats if needed. - auto *Splat = ConstantVector::getSplat(VecTy->getElementCount(), - ConstantInt::get(ElemTy, Val)); - return Splat; -} - auto HexagonVectorCombine::simplify(Value *V) const -> Value * { if (auto *In = dyn_cast(V)) { SimplifyQuery Q(DL, &TLI, &DT, &AC, In); @@ -3580,7 +3549,7 @@ auto HexagonVectorCombine::joinVectorElements(IRBuilderBase &Builder, // If there are too few, fill them with the sign bit. Value *Last = Inputs.back(); Value *Sign = Builder.CreateAShr( - Last, getConstSplat(Last->getType(), Width - 1), "asr"); + Last, ConstantInt::get(Last->getType(), Width - 1), "asr"); Inputs.resize(NeedInputs, Sign); } diff --git a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp index a61bbe56d9c26..8db3e501f9b7e 100644 --- a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp +++ b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp @@ -553,7 +553,7 @@ static bool hasStackGuardSlotTLS(const Triple &TargetTriple) { static Constant* SegmentOffset(IRBuilderBase &IRB, int Offset, unsigned AddressSpace) { return ConstantExpr::getIntToPtr( - ConstantInt::get(Type::getInt32Ty(IRB.getContext()), Offset), + ConstantInt::getSigned(Type::getInt32Ty(IRB.getContext()), Offset), IRB.getPtrTy(AddressSpace)); } diff --git a/llvm/lib/TargetParser/AArch64TargetParser.cpp b/llvm/lib/TargetParser/AArch64TargetParser.cpp index 7e3583275a734..2c0211b3a2919 100644 --- a/llvm/lib/TargetParser/AArch64TargetParser.cpp +++ b/llvm/lib/TargetParser/AArch64TargetParser.cpp @@ -55,21 +55,30 @@ std::optional lookupFMVByID(AArch64::ArchExtKind ExtID) { return {}; } +std::optional getFMVInfoFrom(StringRef Feature) { + std::optional FMV = AArch64::parseFMVExtension(Feature); + if (!FMV && Feature.starts_with('+')) + if (std::optional Ext = + AArch64::targetFeatureToExtension(Feature)) + FMV = lookupFMVByID(Ext->ID); + return FMV; +} + APInt AArch64::getFMVPriority(ArrayRef Features) { // Transitively enable the Arch Extensions which correspond to each feature. ExtensionSet FeatureBits; + APInt PriorityMask = APInt::getZero(128); for (const StringRef Feature : Features) { - std::optional FMV = parseFMVExtension(Feature); - if (!FMV && Feature.starts_with('+')) { - if (std::optional Info = targetFeatureToExtension(Feature)) - FMV = lookupFMVByID(Info->ID); + if (std::optional FMV = getFMVInfoFrom(Feature)) { + // FMV feature without a corresponding Arch Extension may affect priority + if (FMV->ID) + FeatureBits.enable(*FMV->ID); + else + PriorityMask.setBit(FMV->PriorityBit); } - if (FMV && FMV->ID) - FeatureBits.enable(*FMV->ID); } // Construct a bitmask for all the transitively enabled Arch Extensions. - APInt PriorityMask = APInt::getZero(128); for (const FMVInfo &Info : getFMVInfo()) if (Info.ID && FeatureBits.Enabled.test(*Info.ID)) PriorityMask.setBit(Info.PriorityBit); @@ -81,15 +90,15 @@ APInt AArch64::getCpuSupportsMask(ArrayRef Features) { // Transitively enable the Arch Extensions which correspond to each feature. ExtensionSet FeatureBits; for (const StringRef Feature : Features) - if (std::optional Info = parseFMVExtension(Feature)) - if (Info->ID) - FeatureBits.enable(*Info->ID); + if (std::optional FMV = getFMVInfoFrom(Feature)) + if (FMV->ID) + FeatureBits.enable(*FMV->ID); // Construct a bitmask for all the transitively enabled Arch Extensions. APInt FeaturesMask = APInt::getZero(128); for (const FMVInfo &Info : getFMVInfo()) if (Info.ID && FeatureBits.Enabled.test(*Info.ID)) - FeaturesMask.setBit(Info.FeatureBit); + FeaturesMask.setBit(*Info.FeatureBit); return FeaturesMask; } diff --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp index 939071725253f..66b95fc7bde5f 100644 --- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp +++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp @@ -2546,6 +2546,8 @@ static bool OptimizeNonTrivialIFuncs( // Map containing the feature bits for a given function. DenseMap FeatureMask; + // Map containing the priority bits for a given function. + DenseMap PriorityMask; // Map containing all the function versions corresponding to an IFunc symbol. DenseMap> VersionedFuncs; // Map containing the IFunc symbol a function is version of. @@ -2581,14 +2583,17 @@ static bool OptimizeNonTrivialIFuncs( for (Function *V : Versions) { VersionOf.insert({V, &IF}); - auto [It, Inserted] = FeatureMask.try_emplace(V); - if (Inserted) - It->second = GetTTI(*V).getFeatureMask(*V); + auto [FeatIt, FeatInserted] = FeatureMask.try_emplace(V); + if (FeatInserted) + FeatIt->second = GetTTI(*V).getFeatureMask(*V); + auto [PriorIt, PriorInserted] = PriorityMask.try_emplace(V); + if (PriorInserted) + PriorIt->second = GetTTI(*V).getPriorityMask(*V); } // Sort function versions in decreasing priority order. sort(Versions, [&](auto *LHS, auto *RHS) { - return FeatureMask[LHS].ugt(FeatureMask[RHS]); + return PriorityMask[LHS].ugt(PriorityMask[RHS]); }); IFuncs.push_back(&IF); diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h index 972823137023f..fd02493fa2c78 100644 --- a/llvm/lib/Transforms/Vectorize/VPlan.h +++ b/llvm/lib/Transforms/Vectorize/VPlan.h @@ -910,7 +910,7 @@ class VPIRFlags { public: #if !defined(NDEBUG) /// Returns true if the set flags are valid for \p Opcode. - bool flagsValidForOpcode(unsigned Opcode) const; + LLVM_ABI_FOR_TEST bool flagsValidForOpcode(unsigned Opcode) const; #endif #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) @@ -1579,11 +1579,11 @@ class VPWidenCastRecipe : public VPRecipeWithIRFlags, public VPIRMetadata { VP_CLASSOF_IMPL(VPDef::VPWidenCastSC) /// Produce widened copies of the cast. - void execute(VPTransformState &State) override; + LLVM_ABI_FOR_TEST void execute(VPTransformState &State) override; /// Return the cost of this VPWidenCastRecipe. - InstructionCost computeCost(ElementCount VF, - VPCostContext &Ctx) const override; + LLVM_ABI_FOR_TEST InstructionCost + computeCost(ElementCount VF, VPCostContext &Ctx) const override; Instruction::CastOps getOpcode() const { return Opcode; } @@ -1593,8 +1593,8 @@ class VPWidenCastRecipe : public VPRecipeWithIRFlags, public VPIRMetadata { protected: #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) /// Print the recipe. - void printRecipe(raw_ostream &O, const Twine &Indent, - VPSlotTracker &SlotTracker) const override; + LLVM_ABI_FOR_TEST void printRecipe(raw_ostream &O, const Twine &Indent, + VPSlotTracker &SlotTracker) const override; #endif }; @@ -1663,11 +1663,11 @@ class VPWidenIntrinsicRecipe : public VPRecipeWithIRFlags, public VPIRMetadata { VP_CLASSOF_IMPL(VPDef::VPWidenIntrinsicSC) /// Produce a widened version of the vector intrinsic. - void execute(VPTransformState &State) override; + LLVM_ABI_FOR_TEST void execute(VPTransformState &State) override; /// Return the cost of this vector intrinsic. - InstructionCost computeCost(ElementCount VF, - VPCostContext &Ctx) const override; + LLVM_ABI_FOR_TEST InstructionCost + computeCost(ElementCount VF, VPCostContext &Ctx) const override; /// Return the ID of the intrinsic. Intrinsic::ID getVectorIntrinsicID() const { return VectorIntrinsicID; } @@ -1687,13 +1687,13 @@ class VPWidenIntrinsicRecipe : public VPRecipeWithIRFlags, public VPIRMetadata { /// Returns true if the intrinsic may have side-effects. bool mayHaveSideEffects() const { return MayHaveSideEffects; } - bool usesFirstLaneOnly(const VPValue *Op) const override; + LLVM_ABI_FOR_TEST bool usesFirstLaneOnly(const VPValue *Op) const override; protected: #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) /// Print the recipe. - void printRecipe(raw_ostream &O, const Twine &Indent, - VPSlotTracker &SlotTracker) const override; + LLVM_ABI_FOR_TEST void printRecipe(raw_ostream &O, const Twine &Indent, + VPSlotTracker &SlotTracker) const override; #endif }; @@ -3391,11 +3391,11 @@ struct VPWidenLoadEVLRecipe final : public VPWidenMemoryRecipe, public VPValue { VPValue *getEVL() const { return getOperand(1); } /// Generate the wide load or gather. - void execute(VPTransformState &State) override; + LLVM_ABI_FOR_TEST void execute(VPTransformState &State) override; /// Return the cost of this VPWidenLoadEVLRecipe. - InstructionCost computeCost(ElementCount VF, - VPCostContext &Ctx) const override; + LLVM_ABI_FOR_TEST InstructionCost + computeCost(ElementCount VF, VPCostContext &Ctx) const override; /// Returns true if the recipe only uses the first lane of operand \p Op. bool usesFirstLaneOnly(const VPValue *Op) const override { @@ -3409,8 +3409,8 @@ struct VPWidenLoadEVLRecipe final : public VPWidenMemoryRecipe, public VPValue { protected: #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) /// Print the recipe. - void printRecipe(raw_ostream &O, const Twine &Indent, - VPSlotTracker &SlotTracker) const override; + LLVM_ABI_FOR_TEST void printRecipe(raw_ostream &O, const Twine &Indent, + VPSlotTracker &SlotTracker) const override; #endif }; @@ -3477,11 +3477,11 @@ struct VPWidenStoreEVLRecipe final : public VPWidenMemoryRecipe { VPValue *getEVL() const { return getOperand(2); } /// Generate the wide store or scatter. - void execute(VPTransformState &State) override; + LLVM_ABI_FOR_TEST void execute(VPTransformState &State) override; /// Return the cost of this VPWidenStoreEVLRecipe. - InstructionCost computeCost(ElementCount VF, - VPCostContext &Ctx) const override; + LLVM_ABI_FOR_TEST InstructionCost + computeCost(ElementCount VF, VPCostContext &Ctx) const override; /// Returns true if the recipe only uses the first lane of operand \p Op. bool usesFirstLaneOnly(const VPValue *Op) const override { @@ -3500,8 +3500,8 @@ struct VPWidenStoreEVLRecipe final : public VPWidenMemoryRecipe { protected: #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) /// Print the recipe. - void printRecipe(raw_ostream &O, const Twine &Indent, - VPSlotTracker &SlotTracker) const override; + LLVM_ABI_FOR_TEST void printRecipe(raw_ostream &O, const Twine &Indent, + VPSlotTracker &SlotTracker) const override; #endif }; diff --git a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp index 2242f95e4226c..eb078c783d5f7 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp @@ -1385,12 +1385,16 @@ static void simplifyRecipe(VPSingleDefRecipe *Def, VPTypeAnalysis &TypeInfo) { return; } - // Look through ExtractLastLane (BuildVector ....). - if (match(Def, m_ExtractLastLane(m_BuildVector()))) { - auto *BuildVector = cast(Def->getOperand(0)); - Def->replaceAllUsesWith( - BuildVector->getOperand(BuildVector->getNumOperands() - 1)); - return; + // Look through ExtractLastLane. + if (match(Def, m_ExtractLastLane(m_VPValue(A)))) { + if (match(A, m_BuildVector())) { + auto *BuildVector = cast(A); + Def->replaceAllUsesWith( + BuildVector->getOperand(BuildVector->getNumOperands() - 1)); + return; + } + if (Plan->hasScalarVFOnly()) + return Def->replaceAllUsesWith(A); } // Look through ExtractPenultimateElement (BuildVector ....). diff --git a/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp b/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp index 6fb706ea7d64b..7b4c524712d9a 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp @@ -371,10 +371,9 @@ void UnrollState::unrollBlock(VPBlockBase *VPB) { continue; } - if (match(&R, m_ExtractLastLaneOfLastPart(m_VPValue(Op0))) || - match(&R, m_ExtractPenultimateElement(m_VPValue(Op0)))) { - addUniformForAllParts(cast(&R)); - if (Plan.hasScalarVFOnly()) { + if (Plan.hasScalarVFOnly()) { + if (match(&R, m_ExtractLastPart(m_VPValue(Op0))) || + match(&R, m_ExtractPenultimateElement(m_VPValue(Op0)))) { auto *I = cast(&R); bool IsPenultimatePart = I->getOpcode() == VPInstruction::ExtractPenultimateElement; @@ -383,7 +382,10 @@ void UnrollState::unrollBlock(VPBlockBase *VPB) { I->replaceAllUsesWith(getValueForPart(Op0, PartIdx)); continue; } - // For vector VF, always extract from the last part. + } + if (match(&R, m_ExtractLastLaneOfLastPart(m_VPValue(Op0))) || + match(&R, m_ExtractPenultimateElement(m_VPValue(Op0)))) { + addUniformForAllParts(cast(&R)); R.setOperand(0, getValueForPart(Op0, UF - 1)); continue; } diff --git a/llvm/test/CodeGen/AArch64/arm64-cvt-simd-round-rint-strictfp.ll b/llvm/test/CodeGen/AArch64/arm64-cvt-simd-round-rint-strictfp.ll new file mode 100644 index 0000000000000..7633a9b3fff24 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/arm64-cvt-simd-round-rint-strictfp.ll @@ -0,0 +1,286 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 +; RUN: llc < %s -mtriple aarch64-unknown-unknown -mattr=+fprcvt,+fullfp16 | FileCheck %s --check-prefixes=CHECK,CHECK-FPRCVT +; RUN: llc < %s -mtriple aarch64-unknown-unknown -mattr=+fullfp16 | FileCheck %s --check-prefixes=CHECK,CHECK-NOFPRCVT + +; +; Lround strictfp +; + +define float @lround_i32_f16_simd_exp(half %x) { +; CHECK-FPRCVT-LABEL: lround_i32_f16_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas s0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i32_f16_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas w8, h0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.experimental.constrained.lround.i32.f16(half %x, metadata !"fpexcept.strict") + %sum = bitcast i32 %val to float + ret float %sum +} + +define float @lround_i32_f32_simd_exp(float %x) { +; CHECK-LABEL: lround_i32_f32_simd_exp: +; CHECK: // %bb.0: +; CHECK-NEXT: fcvtas s0, s0 +; CHECK-NEXT: ret + %val = call i32 @llvm.experimental.constrained.lround.i32.f32(float %x, metadata !"fpexcept.strict") + %bc = bitcast i32 %val to float + ret float %bc +} + +define float @lround_i32_f64_simd_exp(double %x) { +; CHECK-FPRCVT-LABEL: lround_i32_f64_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas s0, d0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i32_f64_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas w8, d0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.experimental.constrained.lround.i32.f64(double %x, metadata !"fpexcept.strict") + %bc = bitcast i32 %val to float + ret float %bc +} + +define double @lround_i64_f16_simd_exp(half %x) { +; CHECK-FPRCVT-LABEL: lround_i64_f16_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i64_f16_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.lround.i64.f16(half %x, metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lround_i64_f32_simd_exp(float %x) { +; CHECK-FPRCVT-LABEL: lround_i64_f32_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i64_f32_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.lround.i64.f32(float %x, metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lround_i64_f64_simd_exp(double %x) { +; CHECK-LABEL: lround_i64_f64_simd_exp: +; CHECK: // %bb.0: +; CHECK-NEXT: fcvtas d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.experimental.constrained.lround.i64.f64(double %x, metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +; +; Llround strictfp +; + +define double @llround_i64_f16_simd_exp(half %x) { +; CHECK-FPRCVT-LABEL: llround_i64_f16_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llround_i64_f16_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.llround.i64.f16(half %x, metadata !"fpexcept.strict") + %sum = bitcast i64 %val to double + ret double %sum +} + +define double @llround_i64_f32_simd_exp(float %x) { +; CHECK-FPRCVT-LABEL: llround_i64_f32_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llround_i64_f32_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.llround.i64.f32(float %x, metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @llround_i64_f64_simd_exp(double %x) { +; CHECK-LABEL: llround_i64_f64_simd_exp: +; CHECK: // %bb.0: +; CHECK-NEXT: fcvtas d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.experimental.constrained.llround.i64.f64(double %x, metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +; +; Lrint strictfp +; + +define float @lrint_i32_f16_simd_exp(half %x) { +; CHECK-FPRCVT-LABEL: lrint_i32_f16_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx h0, h0 +; CHECK-FPRCVT-NEXT: fcvtzs s0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i32_f16_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx h0, h0 +; CHECK-NOFPRCVT-NEXT: fcvtzs w8, h0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.experimental.constrained.lrint.i32.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %sum = bitcast i32 %val to float + ret float %sum +} + +define float @lrint_i32_f32_simd_exp(float %x) { +; CHECK-LABEL: lrint_i32_f32_simd_exp: +; CHECK: // %bb.0: +; CHECK-NEXT: frintx s0, s0 +; CHECK-NEXT: fcvtzs s0, s0 +; CHECK-NEXT: ret + %val = call i32 @llvm.experimental.constrained.lrint.i32.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i32 %val to float + ret float %bc +} + +define float @lrint_i32_f64_simd_exp(double %x) { +; CHECK-FPRCVT-LABEL: lrint_i32_f64_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx d0, d0 +; CHECK-FPRCVT-NEXT: fcvtzs s0, d0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i32_f64_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx d0, d0 +; CHECK-NOFPRCVT-NEXT: fcvtzs w8, d0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.experimental.constrained.lrint.i32.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i32 %val to float + ret float %bc +} + +define double @lrint_i64_f16_simd_exp(half %x) { +; CHECK-FPRCVT-LABEL: lrint_i64_f16_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx h0, h0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i64_f16_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx h0, h0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.lrint.i53.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lrint_i64_f32_simd_exp(float %x) { +; CHECK-FPRCVT-LABEL: lrint_i64_f32_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx s0, s0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i64_f32_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx s0, s0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.lrint.i64.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lrint_i64_f64_simd_exp(double %x) { +; CHECK-LABEL: lrint_i64_f64_simd_exp: +; CHECK: // %bb.0: +; CHECK-NEXT: frintx d0, d0 +; CHECK-NEXT: fcvtzs d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.experimental.constrained.lrint.i64.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +; +; Llrint strictfp +; + +define double @llrint_i64_f16_simd_exp(half %x) { +; CHECK-FPRCVT-LABEL: llrint_i64_f16_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx h0, h0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llrint_i64_f16_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx h0, h0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.llrint.i64.f16(half %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %sum = bitcast i64 %val to double + ret double %sum +} + +define double @llrint_i64_f32_simd_exp(float %x) { +; CHECK-FPRCVT-LABEL: llrint_i64_f32_simd_exp: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx s0, s0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llrint_i64_f32_simd_exp: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx s0, s0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.experimental.constrained.llrint.i64.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @llrint_i64_f64_simd_exp(double %x) { +; CHECK-LABEL: llrint_i64_f64_simd_exp: +; CHECK: // %bb.0: +; CHECK-NEXT: frintx d0, d0 +; CHECK-NEXT: fcvtzs d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.experimental.constrained.llrint.i64.f64(double %x, metadata !"round.tonearest", metadata !"fpexcept.strict") + %bc = bitcast i64 %val to double + ret double %bc +} diff --git a/llvm/test/CodeGen/AArch64/arm64-cvt-simd-round-rint.ll b/llvm/test/CodeGen/AArch64/arm64-cvt-simd-round-rint.ll new file mode 100644 index 0000000000000..8717952ea944a --- /dev/null +++ b/llvm/test/CodeGen/AArch64/arm64-cvt-simd-round-rint.ll @@ -0,0 +1,286 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 +; RUN: llc < %s -mtriple aarch64-unknown-unknown -mattr=+fprcvt,+fullfp16 | FileCheck %s --check-prefixes=CHECK,CHECK-FPRCVT +; RUN: llc < %s -mtriple aarch64-unknown-unknown -mattr=+fullfp16 | FileCheck %s --check-prefixes=CHECK,CHECK-NOFPRCVT + +; +; Lround +; + +define float @lround_i32_f16_simd(half %x) { +; CHECK-FPRCVT-LABEL: lround_i32_f16_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas s0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i32_f16_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas w8, h0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.lround.i32.f16(half %x) + %sum = bitcast i32 %val to float + ret float %sum +} + +define float @lround_i32_f32_simd(float %x) { +; CHECK-LABEL: lround_i32_f32_simd: +; CHECK: // %bb.0: +; CHECK-NEXT: fcvtas s0, s0 +; CHECK-NEXT: ret + %val = call i32 @llvm.lround.i32.f32(float %x) + %bc = bitcast i32 %val to float + ret float %bc +} + +define float @lround_i32_f64_simd(double %x) { +; CHECK-FPRCVT-LABEL: lround_i32_f64_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas s0, d0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i32_f64_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas w8, d0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.lround.i32.f64(double %x) + %bc = bitcast i32 %val to float + ret float %bc +} + +define double @lround_i64_f16_simd(half %x) { +; CHECK-FPRCVT-LABEL: lround_i64_f16_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i64_f16_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.lround.i64.f16(half %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lround_i64_f32_simd(float %x) { +; CHECK-FPRCVT-LABEL: lround_i64_f32_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lround_i64_f32_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.lround.i64.f32(float %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lround_i64_f64_simd(double %x) { +; CHECK-LABEL: lround_i64_f64_simd: +; CHECK: // %bb.0: +; CHECK-NEXT: fcvtas d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.lround.i64.f64(double %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +; +; Llround +; + +define double @llround_i64_f16_simd(half %x) { +; CHECK-FPRCVT-LABEL: llround_i64_f16_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llround_i64_f16_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.llround.i64.f16(half %x) + %sum = bitcast i64 %val to double + ret double %sum +} + +define double @llround_i64_f32_simd(float %x) { +; CHECK-FPRCVT-LABEL: llround_i64_f32_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: fcvtas d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llround_i64_f32_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: fcvtas x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.llround.i64.f32(float %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @llround_i64_f64_simd(double %x) { +; CHECK-LABEL: llround_i64_f64_simd: +; CHECK: // %bb.0: +; CHECK-NEXT: fcvtas d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.llround.i64.f64(double %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +; +; Lrint +; + +define float @lrint_i32_f16_simd(half %x) { +; CHECK-FPRCVT-LABEL: lrint_i32_f16_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx h0, h0 +; CHECK-FPRCVT-NEXT: fcvtzs s0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i32_f16_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx h0, h0 +; CHECK-NOFPRCVT-NEXT: fcvtzs w8, h0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.lrint.i32.f16(half %x) + %sum = bitcast i32 %val to float + ret float %sum +} + +define float @lrint_i32_f32_simd(float %x) { +; CHECK-LABEL: lrint_i32_f32_simd: +; CHECK: // %bb.0: +; CHECK-NEXT: frintx s0, s0 +; CHECK-NEXT: fcvtzs s0, s0 +; CHECK-NEXT: ret + %val = call i32 @llvm.lrint.i32.f32(float %x) + %bc = bitcast i32 %val to float + ret float %bc +} + +define float @lrint_i32_f64_simd(double %x) { +; CHECK-FPRCVT-LABEL: lrint_i32_f64_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx d0, d0 +; CHECK-FPRCVT-NEXT: fcvtzs s0, d0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i32_f64_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx d0, d0 +; CHECK-NOFPRCVT-NEXT: fcvtzs w8, d0 +; CHECK-NOFPRCVT-NEXT: fmov s0, w8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i32 @llvm.lrint.i32.f64(double %x) + %bc = bitcast i32 %val to float + ret float %bc +} + +define double @lrint_i64_f16_simd(half %x) { +; CHECK-FPRCVT-LABEL: lrint_i64_f16_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx h0, h0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i64_f16_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx h0, h0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.lrint.i64.f16(half %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lrint_i64_f32_simd(float %x) { +; CHECK-FPRCVT-LABEL: lrint_i64_f32_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx s0, s0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: lrint_i64_f32_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx s0, s0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.lrint.i64.f32(float %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @lrint_i64_f64_simd(double %x) { +; CHECK-LABEL: lrint_i64_f64_simd: +; CHECK: // %bb.0: +; CHECK-NEXT: frintx d0, d0 +; CHECK-NEXT: fcvtzs d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.lrint.i64.f64(double %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +; +; Llrint +; + +define double @llrint_i64_f16_simd(half %x) { +; CHECK-FPRCVT-LABEL: llrint_i64_f16_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx h0, h0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, h0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llrint_i64_f16_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx h0, h0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, h0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.llrint.i64.f16(half %x) + %sum = bitcast i64 %val to double + ret double %sum +} + +define double @llrint_i64_f32_simd(float %x) { +; CHECK-FPRCVT-LABEL: llrint_i64_f32_simd: +; CHECK-FPRCVT: // %bb.0: +; CHECK-FPRCVT-NEXT: frintx s0, s0 +; CHECK-FPRCVT-NEXT: fcvtzs d0, s0 +; CHECK-FPRCVT-NEXT: ret +; +; CHECK-NOFPRCVT-LABEL: llrint_i64_f32_simd: +; CHECK-NOFPRCVT: // %bb.0: +; CHECK-NOFPRCVT-NEXT: frintx s0, s0 +; CHECK-NOFPRCVT-NEXT: fcvtzs x8, s0 +; CHECK-NOFPRCVT-NEXT: fmov d0, x8 +; CHECK-NOFPRCVT-NEXT: ret + %val = call i64 @llvm.llrint.i64.f32(float %x) + %bc = bitcast i64 %val to double + ret double %bc +} + +define double @llrint_i64_f64_simd(double %x) { +; CHECK-LABEL: llrint_i64_f64_simd: +; CHECK: // %bb.0: +; CHECK-NEXT: frintx d0, d0 +; CHECK-NEXT: fcvtzs d0, d0 +; CHECK-NEXT: ret + %val = call i64 @llvm.llrint.i64.f64(double %x) + %bc = bitcast i64 %val to double + ret double %bc +} diff --git a/llvm/test/CodeGen/AArch64/atomic-ops.ll b/llvm/test/CodeGen/AArch64/atomic-ops.ll index 1c2edd39e268d..adfb4ab10108a 100644 --- a/llvm/test/CodeGen/AArch64/atomic-ops.ll +++ b/llvm/test/CodeGen/AArch64/atomic-ops.ll @@ -1,6 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc -mtriple=aarch64-none-linux-gnu -disable-post-ra -verify-machineinstrs -aarch64-enable-sink-fold=true < %s | FileCheck %s --check-prefixes=CHECK,INLINE_ATOMICS -; RUN: llc -mtriple=aarch64-none-linux-gnu -disable-post-ra -verify-machineinstrs -mattr=+outline-atomics -aarch64-enable-sink-fold=true < %s | FileCheck %s --check-prefixes=CHECK,OUTLINE_ATOMICS +; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,INLINE_ATOMICS +; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -mattr=+outline-atomics < %s | FileCheck %s --check-prefixes=CHECK,OUTLINE_ATOMICS +; RUN: llc -mtriple=aarch64-none-linux-gnu -verify-machineinstrs -mattr=+lse < %s | FileCheck %s --check-prefixes=CHECK,LSE @var8 = dso_local global i8 0 @var16 = dso_local global i16 0 @@ -30,6 +31,13 @@ define dso_local i8 @test_atomic_load_add_i8(i8 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_add_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: ldaddalb w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw add ptr @var8, i8 %offset seq_cst ret i8 %old } @@ -57,6 +65,13 @@ define dso_local i16 @test_atomic_load_add_i16(i16 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd2_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_add_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: ldaddah w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw add ptr @var16, i16 %offset acquire ret i16 %old } @@ -84,6 +99,13 @@ define dso_local i32 @test_atomic_load_add_i32(i32 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd4_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_add_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: ldaddl w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw add ptr @var32, i32 %offset release ret i32 %old } @@ -111,6 +133,13 @@ define dso_local i64 @test_atomic_load_add_i64(i64 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd8_relax ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_add_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: ldadd x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw add ptr @var64, i64 %offset monotonic ret i64 %old } @@ -139,6 +168,14 @@ define dso_local i8 @test_atomic_load_sub_i8(i8 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd1_relax ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_sub_i8: +; LSE: // %bb.0: +; LSE-NEXT: neg w8, w0 +; LSE-NEXT: adrp x9, var8 +; LSE-NEXT: add x9, x9, :lo12:var8 +; LSE-NEXT: ldaddb w8, w0, [x9] +; LSE-NEXT: ret %old = atomicrmw sub ptr @var8, i8 %offset monotonic ret i8 %old } @@ -167,6 +204,14 @@ define dso_local i16 @test_atomic_load_sub_i16(i16 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd2_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_sub_i16: +; LSE: // %bb.0: +; LSE-NEXT: neg w8, w0 +; LSE-NEXT: adrp x9, var16 +; LSE-NEXT: add x9, x9, :lo12:var16 +; LSE-NEXT: ldaddlh w8, w0, [x9] +; LSE-NEXT: ret %old = atomicrmw sub ptr @var16, i16 %offset release ret i16 %old } @@ -195,6 +240,14 @@ define dso_local i32 @test_atomic_load_sub_i32(i32 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd4_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_sub_i32: +; LSE: // %bb.0: +; LSE-NEXT: neg w8, w0 +; LSE-NEXT: adrp x9, var32 +; LSE-NEXT: add x9, x9, :lo12:var32 +; LSE-NEXT: ldadda w8, w0, [x9] +; LSE-NEXT: ret %old = atomicrmw sub ptr @var32, i32 %offset acquire ret i32 %old } @@ -223,6 +276,14 @@ define dso_local i64 @test_atomic_load_sub_i64(i64 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_sub_i64: +; LSE: // %bb.0: +; LSE-NEXT: neg x8, x0 +; LSE-NEXT: adrp x9, var64 +; LSE-NEXT: add x9, x9, :lo12:var64 +; LSE-NEXT: ldaddal x8, x0, [x9] +; LSE-NEXT: ret %old = atomicrmw sub ptr @var64, i64 %offset seq_cst ret i64 %old } @@ -251,6 +312,14 @@ define dso_local i8 @test_atomic_load_and_i8(i8 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldclr1_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_and_i8: +; LSE: // %bb.0: +; LSE-NEXT: mvn w8, w0 +; LSE-NEXT: adrp x9, var8 +; LSE-NEXT: add x9, x9, :lo12:var8 +; LSE-NEXT: ldclrlb w8, w0, [x9] +; LSE-NEXT: ret %old = atomicrmw and ptr @var8, i8 %offset release ret i8 %old } @@ -279,6 +348,14 @@ define dso_local i16 @test_atomic_load_and_i16(i16 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldclr2_relax ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_and_i16: +; LSE: // %bb.0: +; LSE-NEXT: mvn w8, w0 +; LSE-NEXT: adrp x9, var16 +; LSE-NEXT: add x9, x9, :lo12:var16 +; LSE-NEXT: ldclrh w8, w0, [x9] +; LSE-NEXT: ret %old = atomicrmw and ptr @var16, i16 %offset monotonic ret i16 %old } @@ -307,6 +384,14 @@ define dso_local i32 @test_atomic_load_and_i32(i32 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_and_i32: +; LSE: // %bb.0: +; LSE-NEXT: mvn w8, w0 +; LSE-NEXT: adrp x9, var32 +; LSE-NEXT: add x9, x9, :lo12:var32 +; LSE-NEXT: ldclral w8, w0, [x9] +; LSE-NEXT: ret %old = atomicrmw and ptr @var32, i32 %offset seq_cst ret i32 %old } @@ -335,6 +420,14 @@ define dso_local i64 @test_atomic_load_and_i64(i64 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldclr8_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_and_i64: +; LSE: // %bb.0: +; LSE-NEXT: mvn x8, x0 +; LSE-NEXT: adrp x9, var64 +; LSE-NEXT: add x9, x9, :lo12:var64 +; LSE-NEXT: ldclra x8, x0, [x9] +; LSE-NEXT: ret %old = atomicrmw and ptr @var64, i64 %offset acquire ret i64 %old } @@ -362,6 +455,13 @@ define dso_local i8 @test_atomic_load_or_i8(i8 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldset1_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_or_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: ldsetalb w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw or ptr @var8, i8 %offset seq_cst ret i8 %old } @@ -389,6 +489,13 @@ define dso_local i16 @test_atomic_load_or_i16(i16 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldset2_relax ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_or_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: ldseth w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw or ptr @var16, i16 %offset monotonic ret i16 %old } @@ -416,6 +523,13 @@ define dso_local i32 @test_atomic_load_or_i32(i32 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldset4_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_or_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: ldseta w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw or ptr @var32, i32 %offset acquire ret i32 %old } @@ -443,6 +557,13 @@ define dso_local i64 @test_atomic_load_or_i64(i64 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldset8_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_or_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: ldsetl x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw or ptr @var64, i64 %offset release ret i64 %old } @@ -470,6 +591,13 @@ define dso_local i8 @test_atomic_load_xor_i8(i8 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldeor1_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xor_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: ldeorab w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw xor ptr @var8, i8 %offset acquire ret i8 %old } @@ -497,6 +625,13 @@ define dso_local i16 @test_atomic_load_xor_i16(i16 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldeor2_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xor_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: ldeorlh w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw xor ptr @var16, i16 %offset release ret i16 %old } @@ -524,6 +659,13 @@ define dso_local i32 @test_atomic_load_xor_i32(i32 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xor_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: ldeoral w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw xor ptr @var32, i32 %offset seq_cst ret i32 %old } @@ -551,6 +693,13 @@ define dso_local i64 @test_atomic_load_xor_i64(i64 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_ldeor8_relax ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xor_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: ldeor x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw xor ptr @var64, i64 %offset monotonic ret i64 %old } @@ -577,6 +726,13 @@ define dso_local i8 @test_atomic_load_xchg_i8(i8 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_swp1_relax ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xchg_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: swpb w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw xchg ptr @var8, i8 %offset monotonic ret i8 %old } @@ -603,6 +759,13 @@ define dso_local i16 @test_atomic_load_xchg_i16(i16 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_swp2_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xchg_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: swpalh w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw xchg ptr @var16, i16 %offset seq_cst ret i16 %old } @@ -630,6 +793,13 @@ define dso_local i32 @test_atomic_load_xchg_i32(i32 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_swp4_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xchg_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: swpl w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw xchg ptr @var32, i32 %offset release ret i32 %old } @@ -656,633 +826,1556 @@ define dso_local i64 @test_atomic_load_xchg_i64(i64 %offset) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_swp8_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_xchg_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: swpa x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw xchg ptr @var64, i64 %offset acquire ret i64 %old } define dso_local i8 @test_atomic_load_min_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_min_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var8 -; CHECK-NEXT: add x9, x9, :lo12:var8 -; CHECK-NEXT: .LBB24_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxrb w10, [x9] -; CHECK-NEXT: sxtb w8, w10 -; CHECK-NEXT: cmp w8, w0, sxtb -; CHECK-NEXT: csel w10, w10, w0, le -; CHECK-NEXT: stxrb w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB24_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_min_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var8 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; INLINE_ATOMICS-NEXT: .LBB24_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxrb w10, [x9] +; INLINE_ATOMICS-NEXT: sxtb w8, w10 +; INLINE_ATOMICS-NEXT: cmp w8, w0, sxtb +; INLINE_ATOMICS-NEXT: csel w10, w10, w0, le +; INLINE_ATOMICS-NEXT: stxrb w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB24_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_min_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var8 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: .LBB24_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxrb w10, [x9] +; OUTLINE_ATOMICS-NEXT: sxtb w8, w10 +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, sxtb +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w0, le +; OUTLINE_ATOMICS-NEXT: stxrb w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB24_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_min_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: ldsminab w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw min ptr @var8, i8 %offset acquire ret i8 %old } define dso_local i16 @test_atomic_load_min_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_min_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var16 -; CHECK-NEXT: add x9, x9, :lo12:var16 -; CHECK-NEXT: .LBB25_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrh w10, [x9] -; CHECK-NEXT: sxth w8, w10 -; CHECK-NEXT: cmp w8, w0, sxth -; CHECK-NEXT: csel w10, w10, w0, le -; CHECK-NEXT: stlxrh w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB25_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_min_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var16 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; INLINE_ATOMICS-NEXT: .LBB25_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrh w10, [x9] +; INLINE_ATOMICS-NEXT: sxth w8, w10 +; INLINE_ATOMICS-NEXT: cmp w8, w0, sxth +; INLINE_ATOMICS-NEXT: csel w10, w10, w0, le +; INLINE_ATOMICS-NEXT: stlxrh w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB25_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_min_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var16 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: .LBB25_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrh w10, [x9] +; OUTLINE_ATOMICS-NEXT: sxth w8, w10 +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, sxth +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w0, le +; OUTLINE_ATOMICS-NEXT: stlxrh w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB25_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_min_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: ldsminlh w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw min ptr @var16, i16 %offset release ret i16 %old } define dso_local i32 @test_atomic_load_min_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_min_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB26_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxr w8, [x9] -; CHECK-NEXT: cmp w8, w0 -; CHECK-NEXT: csel w10, w8, w0, le -; CHECK-NEXT: stxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB26_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_min_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB26_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxr w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0 +; INLINE_ATOMICS-NEXT: csel w10, w8, w0, le +; INLINE_ATOMICS-NEXT: stxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB26_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_min_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB26_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0 +; OUTLINE_ATOMICS-NEXT: csel w10, w8, w0, le +; OUTLINE_ATOMICS-NEXT: stxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB26_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_min_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: ldsmin w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw min ptr @var32, i32 %offset monotonic ret i32 %old } define dso_local i64 @test_atomic_load_min_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_min_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB27_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr x8, [x9] -; CHECK-NEXT: cmp x8, x0 -; CHECK-NEXT: csel x10, x8, x0, le -; CHECK-NEXT: stlxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB27_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_min_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB27_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; INLINE_ATOMICS-NEXT: cmp x8, x0 +; INLINE_ATOMICS-NEXT: csel x10, x8, x0, le +; INLINE_ATOMICS-NEXT: stlxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB27_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_min_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB27_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp x8, x0 +; OUTLINE_ATOMICS-NEXT: csel x10, x8, x0, le +; OUTLINE_ATOMICS-NEXT: stlxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB27_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_min_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: ldsminal x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw min ptr @var64, i64 %offset seq_cst ret i64 %old } define dso_local i8 @test_atomic_load_max_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_max_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var8 -; CHECK-NEXT: add x9, x9, :lo12:var8 -; CHECK-NEXT: .LBB28_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxrb w10, [x9] -; CHECK-NEXT: sxtb w8, w10 -; CHECK-NEXT: cmp w8, w0, sxtb -; CHECK-NEXT: csel w10, w10, w0, gt -; CHECK-NEXT: stlxrb w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB28_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_max_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var8 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; INLINE_ATOMICS-NEXT: .LBB28_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxrb w10, [x9] +; INLINE_ATOMICS-NEXT: sxtb w8, w10 +; INLINE_ATOMICS-NEXT: cmp w8, w0, sxtb +; INLINE_ATOMICS-NEXT: csel w10, w10, w0, gt +; INLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB28_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_max_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var8 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: .LBB28_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxrb w10, [x9] +; OUTLINE_ATOMICS-NEXT: sxtb w8, w10 +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, sxtb +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w0, gt +; OUTLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB28_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_max_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: ldsmaxalb w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw max ptr @var8, i8 %offset seq_cst ret i8 %old } define dso_local i16 @test_atomic_load_max_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_max_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var16 -; CHECK-NEXT: add x9, x9, :lo12:var16 -; CHECK-NEXT: .LBB29_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxrh w10, [x9] -; CHECK-NEXT: sxth w8, w10 -; CHECK-NEXT: cmp w8, w0, sxth -; CHECK-NEXT: csel w10, w10, w0, gt -; CHECK-NEXT: stxrh w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB29_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_max_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var16 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; INLINE_ATOMICS-NEXT: .LBB29_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxrh w10, [x9] +; INLINE_ATOMICS-NEXT: sxth w8, w10 +; INLINE_ATOMICS-NEXT: cmp w8, w0, sxth +; INLINE_ATOMICS-NEXT: csel w10, w10, w0, gt +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB29_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_max_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var16 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: .LBB29_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxrh w10, [x9] +; OUTLINE_ATOMICS-NEXT: sxth w8, w10 +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, sxth +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w0, gt +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB29_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_max_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: ldsmaxah w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw max ptr @var16, i16 %offset acquire ret i16 %old } define dso_local i32 @test_atomic_load_max_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_max_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB30_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxr w8, [x9] -; CHECK-NEXT: cmp w8, w0 -; CHECK-NEXT: csel w10, w8, w0, gt -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB30_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_max_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB30_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxr w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0 +; INLINE_ATOMICS-NEXT: csel w10, w8, w0, gt +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB30_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_max_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB30_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0 +; OUTLINE_ATOMICS-NEXT: csel w10, w8, w0, gt +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB30_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_max_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: ldsmaxl w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw max ptr @var32, i32 %offset release ret i32 %old } define dso_local i64 @test_atomic_load_max_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_max_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB31_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxr x8, [x9] -; CHECK-NEXT: cmp x8, x0 -; CHECK-NEXT: csel x10, x8, x0, gt -; CHECK-NEXT: stxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB31_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_max_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB31_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxr x8, [x9] +; INLINE_ATOMICS-NEXT: cmp x8, x0 +; INLINE_ATOMICS-NEXT: csel x10, x8, x0, gt +; INLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB31_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_max_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB31_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp x8, x0 +; OUTLINE_ATOMICS-NEXT: csel x10, x8, x0, gt +; OUTLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB31_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_max_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: ldsmax x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw max ptr @var64, i64 %offset monotonic ret i64 %old } define dso_local i8 @test_atomic_load_umin_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umin_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x8, var8 -; CHECK-NEXT: add x8, x8, :lo12:var8 -; CHECK-NEXT: and w9, w0, #0xff -; CHECK-NEXT: .LBB32_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrb w0, [x8] -; CHECK-NEXT: cmp w0, w9 -; CHECK-NEXT: csel w10, w0, w9, ls -; CHECK-NEXT: stxrb w11, w10, [x8] -; CHECK-NEXT: cbnz w11, .LBB32_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umin_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x8, var8 +; INLINE_ATOMICS-NEXT: add x8, x8, :lo12:var8 +; INLINE_ATOMICS-NEXT: and w9, w0, #0xff +; INLINE_ATOMICS-NEXT: .LBB32_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrb w0, [x8] +; INLINE_ATOMICS-NEXT: cmp w0, w9 +; INLINE_ATOMICS-NEXT: csel w10, w0, w9, ls +; INLINE_ATOMICS-NEXT: stxrb w11, w10, [x8] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB32_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umin_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x8, var8 +; OUTLINE_ATOMICS-NEXT: add x8, x8, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: and w9, w0, #0xff +; OUTLINE_ATOMICS-NEXT: .LBB32_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrb w0, [x8] +; OUTLINE_ATOMICS-NEXT: cmp w0, w9 +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w9, ls +; OUTLINE_ATOMICS-NEXT: stxrb w11, w10, [x8] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB32_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umin_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: lduminb w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw umin ptr @var8, i8 %offset monotonic ret i8 %old } define dso_local i16 @test_atomic_load_umin_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umin_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x8, var16 -; CHECK-NEXT: add x8, x8, :lo12:var16 -; CHECK-NEXT: and w9, w0, #0xffff -; CHECK-NEXT: .LBB33_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxrh w0, [x8] -; CHECK-NEXT: cmp w0, w9 -; CHECK-NEXT: csel w10, w0, w9, ls -; CHECK-NEXT: stxrh w11, w10, [x8] -; CHECK-NEXT: cbnz w11, .LBB33_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umin_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x8, var16 +; INLINE_ATOMICS-NEXT: add x8, x8, :lo12:var16 +; INLINE_ATOMICS-NEXT: and w9, w0, #0xffff +; INLINE_ATOMICS-NEXT: .LBB33_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxrh w0, [x8] +; INLINE_ATOMICS-NEXT: cmp w0, w9 +; INLINE_ATOMICS-NEXT: csel w10, w0, w9, ls +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x8] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB33_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umin_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x8, var16 +; OUTLINE_ATOMICS-NEXT: add x8, x8, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: and w9, w0, #0xffff +; OUTLINE_ATOMICS-NEXT: .LBB33_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxrh w0, [x8] +; OUTLINE_ATOMICS-NEXT: cmp w0, w9 +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w9, ls +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x8] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB33_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umin_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: lduminah w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw umin ptr @var16, i16 %offset acquire ret i16 %old } define dso_local i32 @test_atomic_load_umin_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umin_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB34_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr w8, [x9] -; CHECK-NEXT: cmp w8, w0 -; CHECK-NEXT: csel w10, w8, w0, ls -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB34_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umin_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB34_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0 +; INLINE_ATOMICS-NEXT: csel w10, w8, w0, ls +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB34_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umin_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB34_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0 +; OUTLINE_ATOMICS-NEXT: csel w10, w8, w0, ls +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB34_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umin_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: lduminal w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw umin ptr @var32, i32 %offset seq_cst ret i32 %old } define dso_local i64 @test_atomic_load_umin_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umin_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB35_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr x8, [x9] -; CHECK-NEXT: cmp x8, x0 -; CHECK-NEXT: csel x10, x8, x0, ls -; CHECK-NEXT: stlxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB35_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umin_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB35_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; INLINE_ATOMICS-NEXT: cmp x8, x0 +; INLINE_ATOMICS-NEXT: csel x10, x8, x0, ls +; INLINE_ATOMICS-NEXT: stlxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB35_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umin_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB35_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp x8, x0 +; OUTLINE_ATOMICS-NEXT: csel x10, x8, x0, ls +; OUTLINE_ATOMICS-NEXT: stlxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB35_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umin_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: lduminal x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw umin ptr @var64, i64 %offset acq_rel ret i64 %old } define dso_local i8 @test_atomic_load_umax_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umax_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x8, var8 -; CHECK-NEXT: add x8, x8, :lo12:var8 -; CHECK-NEXT: and w9, w0, #0xff -; CHECK-NEXT: .LBB36_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxrb w0, [x8] -; CHECK-NEXT: cmp w0, w9 -; CHECK-NEXT: csel w10, w0, w9, hi -; CHECK-NEXT: stlxrb w11, w10, [x8] -; CHECK-NEXT: cbnz w11, .LBB36_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umax_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x8, var8 +; INLINE_ATOMICS-NEXT: add x8, x8, :lo12:var8 +; INLINE_ATOMICS-NEXT: and w9, w0, #0xff +; INLINE_ATOMICS-NEXT: .LBB36_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxrb w0, [x8] +; INLINE_ATOMICS-NEXT: cmp w0, w9 +; INLINE_ATOMICS-NEXT: csel w10, w0, w9, hi +; INLINE_ATOMICS-NEXT: stlxrb w11, w10, [x8] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB36_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umax_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x8, var8 +; OUTLINE_ATOMICS-NEXT: add x8, x8, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: and w9, w0, #0xff +; OUTLINE_ATOMICS-NEXT: .LBB36_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxrb w0, [x8] +; OUTLINE_ATOMICS-NEXT: cmp w0, w9 +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w9, hi +; OUTLINE_ATOMICS-NEXT: stlxrb w11, w10, [x8] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB36_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umax_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: ldumaxalb w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw umax ptr @var8, i8 %offset acq_rel ret i8 %old } define dso_local i16 @test_atomic_load_umax_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umax_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x8, var16 -; CHECK-NEXT: add x8, x8, :lo12:var16 -; CHECK-NEXT: and w9, w0, #0xffff -; CHECK-NEXT: .LBB37_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrh w0, [x8] -; CHECK-NEXT: cmp w0, w9 -; CHECK-NEXT: csel w10, w0, w9, hi -; CHECK-NEXT: stxrh w11, w10, [x8] -; CHECK-NEXT: cbnz w11, .LBB37_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umax_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x8, var16 +; INLINE_ATOMICS-NEXT: add x8, x8, :lo12:var16 +; INLINE_ATOMICS-NEXT: and w9, w0, #0xffff +; INLINE_ATOMICS-NEXT: .LBB37_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrh w0, [x8] +; INLINE_ATOMICS-NEXT: cmp w0, w9 +; INLINE_ATOMICS-NEXT: csel w10, w0, w9, hi +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x8] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB37_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umax_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x8, var16 +; OUTLINE_ATOMICS-NEXT: add x8, x8, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: and w9, w0, #0xffff +; OUTLINE_ATOMICS-NEXT: .LBB37_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrh w0, [x8] +; OUTLINE_ATOMICS-NEXT: cmp w0, w9 +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w9, hi +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x8] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB37_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: // kill: def $w0 killed $w0 killed $x0 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umax_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: ldumaxh w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw umax ptr @var16, i16 %offset monotonic ret i16 %old } define dso_local i32 @test_atomic_load_umax_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umax_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB38_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr w8, [x9] -; CHECK-NEXT: cmp w8, w0 -; CHECK-NEXT: csel w10, w8, w0, hi -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB38_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umax_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB38_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0 +; INLINE_ATOMICS-NEXT: csel w10, w8, w0, hi +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB38_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umax_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB38_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0 +; OUTLINE_ATOMICS-NEXT: csel w10, w8, w0, hi +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB38_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umax_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: ldumaxal w0, w0, [x8] +; LSE-NEXT: ret %old = atomicrmw umax ptr @var32, i32 %offset seq_cst ret i32 %old } define dso_local i64 @test_atomic_load_umax_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_umax_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB39_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxr x8, [x9] -; CHECK-NEXT: cmp x8, x0 -; CHECK-NEXT: csel x10, x8, x0, hi -; CHECK-NEXT: stlxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB39_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_umax_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB39_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxr x8, [x9] +; INLINE_ATOMICS-NEXT: cmp x8, x0 +; INLINE_ATOMICS-NEXT: csel x10, x8, x0, hi +; INLINE_ATOMICS-NEXT: stlxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB39_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_umax_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB39_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp x8, x0 +; OUTLINE_ATOMICS-NEXT: csel x10, x8, x0, hi +; OUTLINE_ATOMICS-NEXT: stlxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB39_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_umax_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: ldumaxl x0, x0, [x8] +; LSE-NEXT: ret %old = atomicrmw umax ptr @var64, i64 %offset release ret i64 %old } define dso_local i8 @test_atomic_load_uinc_wrap_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_uinc_wrap_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var8 -; CHECK-NEXT: add x9, x9, :lo12:var8 -; CHECK-NEXT: .LBB40_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrb w8, [x9] -; CHECK-NEXT: cmp w8, w0, uxtb -; CHECK-NEXT: csinc w10, wzr, w8, hs -; CHECK-NEXT: stlxrb w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB40_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var8 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; INLINE_ATOMICS-NEXT: .LBB40_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0, uxtb +; INLINE_ATOMICS-NEXT: csinc w10, wzr, w8, hs +; INLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB40_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var8 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: .LBB40_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, uxtb +; OUTLINE_ATOMICS-NEXT: csinc w10, wzr, w8, hs +; OUTLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB40_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_uinc_wrap_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: adrp x9, var8 +; LSE-NEXT: add x9, x9, :lo12:var8 +; LSE-NEXT: ldrb w8, [x8, :lo12:var8] +; LSE-NEXT: .LBB40_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xff +; LSE-NEXT: cmp w10, w0, uxtb +; LSE-NEXT: csinc w11, wzr, w8, hs +; LSE-NEXT: caslb w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB40_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw uinc_wrap ptr @var8, i8 %offset release ret i8 %old } define dso_local i16 @test_atomic_load_uinc_wrap_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_uinc_wrap_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var16 -; CHECK-NEXT: add x9, x9, :lo12:var16 -; CHECK-NEXT: .LBB41_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrh w8, [x9] -; CHECK-NEXT: cmp w8, w0, uxth -; CHECK-NEXT: csinc w10, wzr, w8, hs -; CHECK-NEXT: stxrh w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB41_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var16 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; INLINE_ATOMICS-NEXT: .LBB41_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0, uxth +; INLINE_ATOMICS-NEXT: csinc w10, wzr, w8, hs +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB41_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var16 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: .LBB41_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, uxth +; OUTLINE_ATOMICS-NEXT: csinc w10, wzr, w8, hs +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB41_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_uinc_wrap_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: adrp x9, var16 +; LSE-NEXT: add x9, x9, :lo12:var16 +; LSE-NEXT: ldrh w8, [x8, :lo12:var16] +; LSE-NEXT: .LBB41_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xffff +; LSE-NEXT: cmp w10, w0, uxth +; LSE-NEXT: csinc w11, wzr, w8, hs +; LSE-NEXT: cash w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB41_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw uinc_wrap ptr @var16, i16 %offset monotonic ret i16 %old } define dso_local i32 @test_atomic_load_uinc_wrap_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_uinc_wrap_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB42_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr w8, [x9] -; CHECK-NEXT: cmp w8, w0 -; CHECK-NEXT: csinc w10, wzr, w8, hs -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB42_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB42_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0 +; INLINE_ATOMICS-NEXT: csinc w10, wzr, w8, hs +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB42_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB42_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0 +; OUTLINE_ATOMICS-NEXT: csinc w10, wzr, w8, hs +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB42_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_uinc_wrap_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: adrp x9, var32 +; LSE-NEXT: add x9, x9, :lo12:var32 +; LSE-NEXT: ldr w8, [x8, :lo12:var32] +; LSE-NEXT: mov w10, w8 +; LSE-NEXT: .LBB42_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: cmp w8, w0 +; LSE-NEXT: csinc w11, wzr, w8, hs +; LSE-NEXT: casal w10, w11, [x9] +; LSE-NEXT: cmp w10, w8 +; LSE-NEXT: mov w8, w10 +; LSE-NEXT: b.ne .LBB42_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw uinc_wrap ptr @var32, i32 %offset seq_cst ret i32 %old } define dso_local i64 @test_atomic_load_uinc_wrap_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_uinc_wrap_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB43_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr x8, [x9] -; CHECK-NEXT: cmp x8, x0 -; CHECK-NEXT: csinc x10, xzr, x8, hs -; CHECK-NEXT: stxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB43_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB43_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; INLINE_ATOMICS-NEXT: cmp x8, x0 +; INLINE_ATOMICS-NEXT: csinc x10, xzr, x8, hs +; INLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB43_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_uinc_wrap_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB43_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp x8, x0 +; OUTLINE_ATOMICS-NEXT: csinc x10, xzr, x8, hs +; OUTLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB43_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_uinc_wrap_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: adrp x9, var64 +; LSE-NEXT: add x9, x9, :lo12:var64 +; LSE-NEXT: ldr x8, [x8, :lo12:var64] +; LSE-NEXT: mov x10, x8 +; LSE-NEXT: .LBB43_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: cmp x8, x0 +; LSE-NEXT: csinc x11, xzr, x8, hs +; LSE-NEXT: casa x10, x11, [x9] +; LSE-NEXT: cmp x10, x8 +; LSE-NEXT: mov x8, x10 +; LSE-NEXT: b.ne .LBB43_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov x0, x8 +; LSE-NEXT: ret %old = atomicrmw uinc_wrap ptr @var64, i64 %offset acquire ret i64 %old } define dso_local i8 @test_atomic_load_udec_wrap_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_udec_wrap_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var8 -; CHECK-NEXT: add x9, x9, :lo12:var8 -; CHECK-NEXT: .LBB44_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrb w8, [x9] -; CHECK-NEXT: cmp w8, w0, uxtb -; CHECK-NEXT: sub w10, w8, #1 -; CHECK-NEXT: ccmp w8, #0, #4, ls -; CHECK-NEXT: csel w10, w0, w10, eq -; CHECK-NEXT: stlxrb w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB44_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var8 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; INLINE_ATOMICS-NEXT: .LBB44_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0, uxtb +; INLINE_ATOMICS-NEXT: sub w10, w8, #1 +; INLINE_ATOMICS-NEXT: ccmp w8, #0, #4, ls +; INLINE_ATOMICS-NEXT: csel w10, w0, w10, eq +; INLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB44_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var8 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: .LBB44_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, uxtb +; OUTLINE_ATOMICS-NEXT: sub w10, w8, #1 +; OUTLINE_ATOMICS-NEXT: ccmp w8, #0, #4, ls +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w10, eq +; OUTLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB44_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_udec_wrap_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: adrp x9, var8 +; LSE-NEXT: add x9, x9, :lo12:var8 +; LSE-NEXT: ldrb w8, [x8, :lo12:var8] +; LSE-NEXT: .LBB44_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xff +; LSE-NEXT: sub w11, w8, #1 +; LSE-NEXT: cmp w10, w0, uxtb +; LSE-NEXT: ccmp w10, #0, #4, ls +; LSE-NEXT: csel w11, w0, w11, eq +; LSE-NEXT: caslb w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB44_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw udec_wrap ptr @var8, i8 %offset release ret i8 %old } define dso_local i16 @test_atomic_load_udec_wrap_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_udec_wrap_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var16 -; CHECK-NEXT: add x9, x9, :lo12:var16 -; CHECK-NEXT: .LBB45_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrh w8, [x9] -; CHECK-NEXT: cmp w8, w0, uxth -; CHECK-NEXT: sub w10, w8, #1 -; CHECK-NEXT: ccmp w8, #0, #4, ls -; CHECK-NEXT: csel w10, w0, w10, eq -; CHECK-NEXT: stxrh w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB45_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var16 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; INLINE_ATOMICS-NEXT: .LBB45_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0, uxth +; INLINE_ATOMICS-NEXT: sub w10, w8, #1 +; INLINE_ATOMICS-NEXT: ccmp w8, #0, #4, ls +; INLINE_ATOMICS-NEXT: csel w10, w0, w10, eq +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB45_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var16 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: .LBB45_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, uxth +; OUTLINE_ATOMICS-NEXT: sub w10, w8, #1 +; OUTLINE_ATOMICS-NEXT: ccmp w8, #0, #4, ls +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w10, eq +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB45_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_udec_wrap_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: adrp x9, var16 +; LSE-NEXT: add x9, x9, :lo12:var16 +; LSE-NEXT: ldrh w8, [x8, :lo12:var16] +; LSE-NEXT: .LBB45_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xffff +; LSE-NEXT: sub w11, w8, #1 +; LSE-NEXT: cmp w10, w0, uxth +; LSE-NEXT: ccmp w10, #0, #4, ls +; LSE-NEXT: csel w11, w0, w11, eq +; LSE-NEXT: cash w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB45_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw udec_wrap ptr @var16, i16 %offset monotonic ret i16 %old } define dso_local i32 @test_atomic_load_udec_wrap_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_udec_wrap_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB46_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr w8, [x9] -; CHECK-NEXT: cmp w8, w0 -; CHECK-NEXT: sub w10, w8, #1 -; CHECK-NEXT: ccmp w8, #0, #4, ls -; CHECK-NEXT: csel w10, w0, w10, eq -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB46_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB46_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; INLINE_ATOMICS-NEXT: cmp w8, w0 +; INLINE_ATOMICS-NEXT: sub w10, w8, #1 +; INLINE_ATOMICS-NEXT: ccmp w8, #0, #4, ls +; INLINE_ATOMICS-NEXT: csel w10, w0, w10, eq +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB46_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB46_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp w8, w0 +; OUTLINE_ATOMICS-NEXT: sub w10, w8, #1 +; OUTLINE_ATOMICS-NEXT: ccmp w8, #0, #4, ls +; OUTLINE_ATOMICS-NEXT: csel w10, w0, w10, eq +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB46_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_udec_wrap_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: adrp x9, var32 +; LSE-NEXT: add x9, x9, :lo12:var32 +; LSE-NEXT: ldr w8, [x8, :lo12:var32] +; LSE-NEXT: mov w10, w8 +; LSE-NEXT: .LBB46_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: cmp w8, w0 +; LSE-NEXT: sub w11, w8, #1 +; LSE-NEXT: ccmp w8, #0, #4, ls +; LSE-NEXT: csel w11, w0, w11, eq +; LSE-NEXT: casal w10, w11, [x9] +; LSE-NEXT: cmp w10, w8 +; LSE-NEXT: mov w8, w10 +; LSE-NEXT: b.ne .LBB46_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw udec_wrap ptr @var32, i32 %offset seq_cst ret i32 %old } define dso_local i64 @test_atomic_load_udec_wrap_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_udec_wrap_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB47_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr x8, [x9] -; CHECK-NEXT: cmp x8, x0 -; CHECK-NEXT: sub x10, x8, #1 -; CHECK-NEXT: ccmp x8, #0, #4, ls -; CHECK-NEXT: csel x10, x0, x10, eq -; CHECK-NEXT: stxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB47_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB47_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; INLINE_ATOMICS-NEXT: cmp x8, x0 +; INLINE_ATOMICS-NEXT: sub x10, x8, #1 +; INLINE_ATOMICS-NEXT: ccmp x8, #0, #4, ls +; INLINE_ATOMICS-NEXT: csel x10, x0, x10, eq +; INLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB47_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_udec_wrap_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB47_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: cmp x8, x0 +; OUTLINE_ATOMICS-NEXT: sub x10, x8, #1 +; OUTLINE_ATOMICS-NEXT: ccmp x8, #0, #4, ls +; OUTLINE_ATOMICS-NEXT: csel x10, x0, x10, eq +; OUTLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB47_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_udec_wrap_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: adrp x9, var64 +; LSE-NEXT: add x9, x9, :lo12:var64 +; LSE-NEXT: ldr x8, [x8, :lo12:var64] +; LSE-NEXT: mov x10, x8 +; LSE-NEXT: .LBB47_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: cmp x8, x0 +; LSE-NEXT: sub x11, x8, #1 +; LSE-NEXT: ccmp x8, #0, #4, ls +; LSE-NEXT: csel x11, x0, x11, eq +; LSE-NEXT: casa x10, x11, [x9] +; LSE-NEXT: cmp x10, x8 +; LSE-NEXT: mov x8, x10 +; LSE-NEXT: b.ne .LBB47_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov x0, x8 +; LSE-NEXT: ret %old = atomicrmw udec_wrap ptr @var64, i64 %offset acquire ret i64 %old } define dso_local i8 @test_atomic_load_usub_cond_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_cond_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var8 -; CHECK-NEXT: add x9, x9, :lo12:var8 -; CHECK-NEXT: .LBB48_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrb w8, [x9] -; CHECK-NEXT: sub w10, w8, w0 -; CHECK-NEXT: cmp w8, w0, uxtb -; CHECK-NEXT: csel w10, w10, w8, hs -; CHECK-NEXT: stlxrb w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB48_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var8 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; INLINE_ATOMICS-NEXT: .LBB48_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; INLINE_ATOMICS-NEXT: sub w10, w8, w0 +; INLINE_ATOMICS-NEXT: cmp w8, w0, uxtb +; INLINE_ATOMICS-NEXT: csel w10, w10, w8, hs +; INLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB48_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var8 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: .LBB48_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; OUTLINE_ATOMICS-NEXT: sub w10, w8, w0 +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, uxtb +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w8, hs +; OUTLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB48_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_cond_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: adrp x9, var8 +; LSE-NEXT: add x9, x9, :lo12:var8 +; LSE-NEXT: ldrb w8, [x8, :lo12:var8] +; LSE-NEXT: .LBB48_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xff +; LSE-NEXT: sub w11, w8, w0 +; LSE-NEXT: cmp w10, w0, uxtb +; LSE-NEXT: csel w11, w11, w8, hs +; LSE-NEXT: caslb w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB48_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw usub_cond ptr @var8, i8 %offset release ret i8 %old } define dso_local i16 @test_atomic_load_usub_cond_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_cond_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var16 -; CHECK-NEXT: add x9, x9, :lo12:var16 -; CHECK-NEXT: .LBB49_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrh w8, [x9] -; CHECK-NEXT: sub w10, w8, w0 -; CHECK-NEXT: cmp w8, w0, uxth -; CHECK-NEXT: csel w10, w10, w8, hs -; CHECK-NEXT: stxrh w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB49_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var16 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; INLINE_ATOMICS-NEXT: .LBB49_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; INLINE_ATOMICS-NEXT: sub w10, w8, w0 +; INLINE_ATOMICS-NEXT: cmp w8, w0, uxth +; INLINE_ATOMICS-NEXT: csel w10, w10, w8, hs +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB49_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var16 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: .LBB49_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; OUTLINE_ATOMICS-NEXT: sub w10, w8, w0 +; OUTLINE_ATOMICS-NEXT: cmp w8, w0, uxth +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w8, hs +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB49_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_cond_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: adrp x9, var16 +; LSE-NEXT: add x9, x9, :lo12:var16 +; LSE-NEXT: ldrh w8, [x8, :lo12:var16] +; LSE-NEXT: .LBB49_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xffff +; LSE-NEXT: sub w11, w8, w0 +; LSE-NEXT: cmp w10, w0, uxth +; LSE-NEXT: csel w11, w11, w8, hs +; LSE-NEXT: cash w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB49_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw usub_cond ptr @var16, i16 %offset monotonic ret i16 %old } define dso_local i32 @test_atomic_load_usub_cond_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_cond_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB50_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr w8, [x9] -; CHECK-NEXT: subs w10, w8, w0 -; CHECK-NEXT: csel w10, w10, w8, hs -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB50_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB50_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; INLINE_ATOMICS-NEXT: subs w10, w8, w0 +; INLINE_ATOMICS-NEXT: csel w10, w10, w8, hs +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB50_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB50_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: subs w10, w8, w0 +; OUTLINE_ATOMICS-NEXT: csel w10, w10, w8, hs +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB50_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_cond_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: adrp x9, var32 +; LSE-NEXT: add x9, x9, :lo12:var32 +; LSE-NEXT: ldr w8, [x8, :lo12:var32] +; LSE-NEXT: mov w10, w8 +; LSE-NEXT: .LBB50_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: subs w11, w8, w0 +; LSE-NEXT: csel w11, w11, w8, hs +; LSE-NEXT: casal w10, w11, [x9] +; LSE-NEXT: cmp w10, w8 +; LSE-NEXT: mov w8, w10 +; LSE-NEXT: b.ne .LBB50_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw usub_cond ptr @var32, i32 %offset seq_cst ret i32 %old } define dso_local i64 @test_atomic_load_usub_cond_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_cond_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB51_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr x8, [x9] -; CHECK-NEXT: subs x10, x8, x0 -; CHECK-NEXT: csel x10, x10, x8, hs -; CHECK-NEXT: stxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB51_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB51_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; INLINE_ATOMICS-NEXT: subs x10, x8, x0 +; INLINE_ATOMICS-NEXT: csel x10, x10, x8, hs +; INLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB51_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_cond_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB51_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: subs x10, x8, x0 +; OUTLINE_ATOMICS-NEXT: csel x10, x10, x8, hs +; OUTLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB51_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_cond_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: adrp x9, var64 +; LSE-NEXT: add x9, x9, :lo12:var64 +; LSE-NEXT: ldr x8, [x8, :lo12:var64] +; LSE-NEXT: mov x10, x8 +; LSE-NEXT: .LBB51_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: subs x11, x8, x0 +; LSE-NEXT: csel x11, x11, x8, hs +; LSE-NEXT: casa x10, x11, [x9] +; LSE-NEXT: cmp x10, x8 +; LSE-NEXT: mov x8, x10 +; LSE-NEXT: b.ne .LBB51_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov x0, x8 +; LSE-NEXT: ret %old = atomicrmw usub_cond ptr @var64, i64 %offset acquire ret i64 %old } define dso_local i8 @test_atomic_load_usub_sat_i8(i8 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_sat_i8: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var8 -; CHECK-NEXT: add x9, x9, :lo12:var8 -; CHECK-NEXT: .LBB52_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrb w8, [x9] -; CHECK-NEXT: subs w10, w8, w0, uxtb -; CHECK-NEXT: csel w10, wzr, w10, lo -; CHECK-NEXT: stlxrb w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB52_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i8: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var8 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; INLINE_ATOMICS-NEXT: .LBB52_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; INLINE_ATOMICS-NEXT: subs w10, w8, w0, uxtb +; INLINE_ATOMICS-NEXT: csel w10, wzr, w10, lo +; INLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB52_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i8: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var8 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var8 +; OUTLINE_ATOMICS-NEXT: .LBB52_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrb w8, [x9] +; OUTLINE_ATOMICS-NEXT: subs w10, w8, w0, uxtb +; OUTLINE_ATOMICS-NEXT: csel w10, wzr, w10, lo +; OUTLINE_ATOMICS-NEXT: stlxrb w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB52_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_sat_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: adrp x9, var8 +; LSE-NEXT: add x9, x9, :lo12:var8 +; LSE-NEXT: ldrb w8, [x8, :lo12:var8] +; LSE-NEXT: .LBB52_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xff +; LSE-NEXT: subs w11, w10, w0, uxtb +; LSE-NEXT: csel w11, wzr, w11, lo +; LSE-NEXT: caslb w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB52_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw usub_sat ptr @var8, i8 %offset release ret i8 %old } define dso_local i16 @test_atomic_load_usub_sat_i16(i16 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_sat_i16: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var16 -; CHECK-NEXT: add x9, x9, :lo12:var16 -; CHECK-NEXT: .LBB53_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldxrh w8, [x9] -; CHECK-NEXT: subs w10, w8, w0, uxth -; CHECK-NEXT: csel w10, wzr, w10, lo -; CHECK-NEXT: stxrh w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB53_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i16: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var16 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; INLINE_ATOMICS-NEXT: .LBB53_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; INLINE_ATOMICS-NEXT: subs w10, w8, w0, uxth +; INLINE_ATOMICS-NEXT: csel w10, wzr, w10, lo +; INLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB53_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i16: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var16 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var16 +; OUTLINE_ATOMICS-NEXT: .LBB53_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldxrh w8, [x9] +; OUTLINE_ATOMICS-NEXT: subs w10, w8, w0, uxth +; OUTLINE_ATOMICS-NEXT: csel w10, wzr, w10, lo +; OUTLINE_ATOMICS-NEXT: stxrh w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB53_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_sat_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: adrp x9, var16 +; LSE-NEXT: add x9, x9, :lo12:var16 +; LSE-NEXT: ldrh w8, [x8, :lo12:var16] +; LSE-NEXT: .LBB53_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: and w10, w8, #0xffff +; LSE-NEXT: subs w11, w10, w0, uxth +; LSE-NEXT: csel w11, wzr, w11, lo +; LSE-NEXT: cash w8, w11, [x9] +; LSE-NEXT: cmp w8, w10 +; LSE-NEXT: b.ne .LBB53_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw usub_sat ptr @var16, i16 %offset monotonic ret i16 %old } define dso_local i32 @test_atomic_load_usub_sat_i32(i32 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_sat_i32: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var32 -; CHECK-NEXT: add x9, x9, :lo12:var32 -; CHECK-NEXT: .LBB54_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr w8, [x9] -; CHECK-NEXT: subs w10, w8, w0 -; CHECK-NEXT: csel w10, wzr, w10, lo -; CHECK-NEXT: stlxr w11, w10, [x9] -; CHECK-NEXT: cbnz w11, .LBB54_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov w0, w8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i32: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var32 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; INLINE_ATOMICS-NEXT: .LBB54_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; INLINE_ATOMICS-NEXT: subs w10, w8, w0 +; INLINE_ATOMICS-NEXT: csel w10, wzr, w10, lo +; INLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB54_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov w0, w8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i32: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var32 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var32 +; OUTLINE_ATOMICS-NEXT: .LBB54_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr w8, [x9] +; OUTLINE_ATOMICS-NEXT: subs w10, w8, w0 +; OUTLINE_ATOMICS-NEXT: csel w10, wzr, w10, lo +; OUTLINE_ATOMICS-NEXT: stlxr w11, w10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB54_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov w0, w8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_sat_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: adrp x9, var32 +; LSE-NEXT: add x9, x9, :lo12:var32 +; LSE-NEXT: ldr w8, [x8, :lo12:var32] +; LSE-NEXT: mov w10, w8 +; LSE-NEXT: .LBB54_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: subs w11, w8, w0 +; LSE-NEXT: csel w11, wzr, w11, lo +; LSE-NEXT: casal w10, w11, [x9] +; LSE-NEXT: cmp w10, w8 +; LSE-NEXT: mov w8, w10 +; LSE-NEXT: b.ne .LBB54_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov w0, w8 +; LSE-NEXT: ret %old = atomicrmw usub_sat ptr @var32, i32 %offset seq_cst ret i32 %old } define dso_local i64 @test_atomic_load_usub_sat_i64(i64 %offset) nounwind { -; CHECK-LABEL: test_atomic_load_usub_sat_i64: -; CHECK: // %bb.0: -; CHECK-NEXT: adrp x9, var64 -; CHECK-NEXT: add x9, x9, :lo12:var64 -; CHECK-NEXT: .LBB55_1: // %atomicrmw.start -; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldaxr x8, [x9] -; CHECK-NEXT: subs x10, x8, x0 -; CHECK-NEXT: csel x10, xzr, x10, lo -; CHECK-NEXT: stxr w11, x10, [x9] -; CHECK-NEXT: cbnz w11, .LBB55_1 -; CHECK-NEXT: // %bb.2: // %atomicrmw.end -; CHECK-NEXT: mov x0, x8 -; CHECK-NEXT: ret +; INLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i64: +; INLINE_ATOMICS: // %bb.0: +; INLINE_ATOMICS-NEXT: adrp x9, var64 +; INLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; INLINE_ATOMICS-NEXT: .LBB55_1: // %atomicrmw.start +; INLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; INLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; INLINE_ATOMICS-NEXT: subs x10, x8, x0 +; INLINE_ATOMICS-NEXT: csel x10, xzr, x10, lo +; INLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; INLINE_ATOMICS-NEXT: cbnz w11, .LBB55_1 +; INLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; INLINE_ATOMICS-NEXT: mov x0, x8 +; INLINE_ATOMICS-NEXT: ret +; +; OUTLINE_ATOMICS-LABEL: test_atomic_load_usub_sat_i64: +; OUTLINE_ATOMICS: // %bb.0: +; OUTLINE_ATOMICS-NEXT: adrp x9, var64 +; OUTLINE_ATOMICS-NEXT: add x9, x9, :lo12:var64 +; OUTLINE_ATOMICS-NEXT: .LBB55_1: // %atomicrmw.start +; OUTLINE_ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1 +; OUTLINE_ATOMICS-NEXT: ldaxr x8, [x9] +; OUTLINE_ATOMICS-NEXT: subs x10, x8, x0 +; OUTLINE_ATOMICS-NEXT: csel x10, xzr, x10, lo +; OUTLINE_ATOMICS-NEXT: stxr w11, x10, [x9] +; OUTLINE_ATOMICS-NEXT: cbnz w11, .LBB55_1 +; OUTLINE_ATOMICS-NEXT: // %bb.2: // %atomicrmw.end +; OUTLINE_ATOMICS-NEXT: mov x0, x8 +; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_load_usub_sat_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: adrp x9, var64 +; LSE-NEXT: add x9, x9, :lo12:var64 +; LSE-NEXT: ldr x8, [x8, :lo12:var64] +; LSE-NEXT: mov x10, x8 +; LSE-NEXT: .LBB55_1: // %atomicrmw.start +; LSE-NEXT: // =>This Inner Loop Header: Depth=1 +; LSE-NEXT: subs x11, x8, x0 +; LSE-NEXT: csel x11, xzr, x11, lo +; LSE-NEXT: casa x10, x11, [x9] +; LSE-NEXT: cmp x10, x8 +; LSE-NEXT: mov x8, x10 +; LSE-NEXT: b.ne .LBB55_1 +; LSE-NEXT: // %bb.2: // %atomicrmw.end +; LSE-NEXT: mov x0, x8 +; LSE-NEXT: ret %old = atomicrmw usub_sat ptr @var64, i64 %offset acquire ret i64 %old } @@ -1318,6 +2411,13 @@ define dso_local i8 @test_atomic_cmpxchg_i8(i8 %wanted, i8 %new) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_cas1_acq ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_cmpxchg_i8: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var8 +; LSE-NEXT: add x8, x8, :lo12:var8 +; LSE-NEXT: casab w0, w1, [x8] +; LSE-NEXT: ret %pair = cmpxchg ptr @var8, i8 %wanted, i8 %new acquire acquire %old = extractvalue { i8, i1 } %pair, 0 ret i8 %old @@ -1354,6 +2454,13 @@ define dso_local i16 @test_atomic_cmpxchg_i16(i16 %wanted, i16 %new) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_cas2_acq_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_cmpxchg_i16: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var16 +; LSE-NEXT: add x8, x8, :lo12:var16 +; LSE-NEXT: casalh w0, w1, [x8] +; LSE-NEXT: ret %pair = cmpxchg ptr @var16, i16 %wanted, i16 %new seq_cst seq_cst %old = extractvalue { i16, i1 } %pair, 0 ret i16 %old @@ -1390,6 +2497,13 @@ define dso_local i32 @test_atomic_cmpxchg_i32(i32 %wanted, i32 %new) nounwind { ; OUTLINE_ATOMICS-NEXT: bl __aarch64_cas4_rel ; OUTLINE_ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_cmpxchg_i32: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var32 +; LSE-NEXT: add x8, x8, :lo12:var32 +; LSE-NEXT: casl w0, w1, [x8] +; LSE-NEXT: ret %pair = cmpxchg ptr @var32, i32 %wanted, i32 %new release monotonic %old = extractvalue { i32, i1 } %pair, 0 ret i32 %old @@ -1427,6 +2541,14 @@ define dso_local void @test_atomic_cmpxchg_i64(i64 %wanted, i64 %new) nounwind { ; OUTLINE_ATOMICS-NEXT: str x0, [x19] ; OUTLINE_ATOMICS-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload ; OUTLINE_ATOMICS-NEXT: ret +; +; LSE-LABEL: test_atomic_cmpxchg_i64: +; LSE: // %bb.0: +; LSE-NEXT: adrp x8, var64 +; LSE-NEXT: add x8, x8, :lo12:var64 +; LSE-NEXT: cas x0, x1, [x8] +; LSE-NEXT: str x0, [x8] +; LSE-NEXT: ret %pair = cmpxchg ptr @var64, i64 %wanted, i64 %new monotonic monotonic %old = extractvalue { i64, i1 } %pair, 0 store i64 %old, ptr @var64 diff --git a/llvm/test/Transforms/GlobalOpt/resolve-fmv-ifunc.ll b/llvm/test/Transforms/GlobalOpt/resolve-fmv-ifunc.ll index a7fcc667dbedc..32709cb2cc035 100644 --- a/llvm/test/Transforms/GlobalOpt/resolve-fmv-ifunc.ll +++ b/llvm/test/Transforms/GlobalOpt/resolve-fmv-ifunc.ll @@ -1,4 +1,4 @@ -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --filter "call i32 @(test_single_bb_resolver|test_multi_bb_resolver|test_caller_feats_not_implied|test_non_fmv_caller|test_priority|test_alternative_names|test_unrelated_callers|test_known_bits)" --version 4 +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --filter "call i32 @(test_single_bb_resolver|test_multi_bb_resolver|test_caller_feats_not_implied|test_non_fmv_caller|test_priority|test_alternative_names|test_unrelated_callers|test_known_bits|test_priority_override)" --version 4 ; REQUIRES: aarch64-registered-target @@ -15,6 +15,7 @@ $test_priority.resolver = comdat any $test_alternative_names.resolver = comdat any $test_unrelated_callers.resolver = comdat any $test_known_bits.resolver = comdat any +$test_priority_override.resolver = comdat any $caller1.resolver = comdat any $caller2.resolver = comdat any $caller3.resolver = comdat any @@ -23,6 +24,7 @@ $caller7.resolver = comdat any $caller8.resolver = comdat any $caller9.resolver = comdat any $caller11.resolver = comdat any +$caller12.resolver = comdat any @__aarch64_cpu_features = external local_unnamed_addr global { i64 } @@ -34,6 +36,7 @@ $caller11.resolver = comdat any @test_alternative_names = weak_odr ifunc i32 (), ptr @test_alternative_names.resolver @test_unrelated_callers = weak_odr ifunc i32 (), ptr @test_unrelated_callers.resolver @test_known_bits = weak_odr ifunc i32 (), ptr @test_known_bits.resolver +@test_priority_override = weak_odr ifunc i32 (), ptr @test_priority_override.resolver @caller1 = weak_odr ifunc i32 (), ptr @caller1.resolver @caller2 = weak_odr ifunc i32 (), ptr @caller2.resolver @caller3 = weak_odr ifunc i32 (), ptr @caller3.resolver @@ -42,6 +45,7 @@ $caller11.resolver = comdat any @caller8 = weak_odr ifunc i32 (), ptr @caller8.resolver @caller9 = weak_odr ifunc i32 (), ptr @caller9.resolver @caller11 = weak_odr ifunc i32 (), ptr @caller11.resolver +@caller12 = weak_odr ifunc i32 (), ptr @caller12.resolver declare void @__init_cpu_features_resolver() local_unnamed_addr @@ -678,6 +682,68 @@ resolver_else2: ; preds = %resolver_else br label %common.ret } +declare i32 @test_priority_override._Maes() #20 +declare i32 @test_priority_override._Msme() #21 +declare i32 @test_priority_override.default() #0 + +define weak_odr ptr @test_priority_override.resolver() comdat { +; CHECK-LABEL: define weak_odr ptr @test_priority_override.resolver() comdat { +resolver_entry: + tail call void @__init_cpu_features_resolver() + %0 = load i64, ptr @__aarch64_cpu_features, align 8 + %1 = and i64 %0, 33536 + %2 = icmp eq i64 %1, 33536 + %3 = and i64 %0, 4398180795136 + %4 = icmp eq i64 %3, 4398180795136 + %test_priority_override._Msme.test_priority_override.default = select i1 %4, ptr @test_priority_override._Msme, ptr @test_priority_override.default + %common.ret.op = select i1 %2, ptr @test_priority_override._Maes, ptr %test_priority_override._Msme.test_priority_override.default + ret ptr %common.ret.op +} + +define i32 @caller12._Maes() #22 { +; CHECK-LABEL: define i32 @caller12._Maes( +; CHECK-SAME: ) #[[ATTR6:[0-9]+]] { +; CHECK: [[CALL:%.*]] = tail call i32 @test_priority_override._Maes() +; +entry: + %call = tail call i32 @test_priority_override() + ret i32 %call +} + +define i32 @caller12._Mbf16() #23 { +; CHECK-LABEL: define i32 @caller12._Mbf16( +; CHECK-SAME: ) #[[ATTR19:[0-9]+]] { +; CHECK: [[CALL:%.*]] = tail call i32 @test_priority_override() +; +entry: + %call = tail call i32 @test_priority_override() + ret i32 %call +} + +define noundef i32 @caller12.default() #0 { +; CHECK-LABEL: define noundef i32 @caller12.default( +; CHECK-SAME: ) #[[ATTR0]] { +; CHECK: [[CALL:%.*]] = tail call i32 @test_priority_override.default() +; +entry: + %call = tail call i32 @test_priority_override() + ret i32 %call +} + +define weak_odr ptr @caller12.resolver() comdat { +; CHECK-LABEL: define weak_odr ptr @caller12.resolver() comdat { +resolver_entry: + tail call void @__init_cpu_features_resolver() + %0 = load i64, ptr @__aarch64_cpu_features, align 8 + %1 = and i64 %0, 33536 + %2 = icmp eq i64 %1, 33536 + %3 = and i64 %0, 134218496 + %4 = icmp eq i64 %3, 134218496 + %caller12._Mbf16.caller12.default = select i1 %4, ptr @caller12._Mbf16, ptr @caller12.default + %common.ret.op = select i1 %2, ptr @caller12._Maes, ptr %caller12._Mbf16.caller12.default + ret ptr %common.ret.op +} + attributes #0 = { "fmv-features" } attributes #1 = { "fmv-features"="sve" } attributes #2 = { "fmv-features"="sve2" } @@ -698,3 +764,7 @@ attributes #16 = { "fmv-features"="rcpc2" } attributes #17 = { "fmv-features"="frintts" } attributes #18 = { "target-features"="+fp-armv8,+mops,+neon,+outline-atomics,+sve,+v8a" } attributes #19 = { "fmv-features"="aes,sve2" } +attributes #20 = { "fmv-features"="P1,P4,P5,aes" } ; priority=50 +attributes #21 = { "fmv-features"="P1,P2,P3,P4,sme" } ; priority=30 +attributes #22 = { "fmv-features"="P3,P6,P7,aes" } ; priority=200 +attributes #23 = { "fmv-features"="P2,P5,P6,bf16" } ; priority=100 diff --git a/llvm/test/Transforms/LoopVectorize/interleave-and-scalarize-only.ll b/llvm/test/Transforms/LoopVectorize/interleave-and-scalarize-only.ll index bbd596a772c53..c77afa870e2c1 100644 --- a/llvm/test/Transforms/LoopVectorize/interleave-and-scalarize-only.ll +++ b/llvm/test/Transforms/LoopVectorize/interleave-and-scalarize-only.ll @@ -220,7 +220,6 @@ exit: ; DBG-EMPTY: ; DBG-NEXT: middle.block: ; DBG-NEXT: EMIT vp<[[RESUME_1_PART:%.+]]> = extract-last-part vp<[[SCALAR_STEPS]]> -; DBG-NEXT: EMIT vp<[[RESUME_1:%.+]]> = extract-last-lane vp<[[RESUME_1_PART]]> ; DBG-NEXT: EMIT vp<[[CMP:%.+]]> = icmp eq vp<[[TC]]>, vp<[[VEC_TC]]> ; DBG-NEXT: EMIT branch-on-cond vp<[[CMP]]> ; DBG-NEXT: Successor(s): ir-bb, scalar.ph @@ -230,7 +229,7 @@ exit: ; DBG-EMPTY: ; DBG-NEXT: scalar.ph: ; DBG-NEXT: EMIT-SCALAR vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb ] -; DBG-NEXT: EMIT-SCALAR vp<[[RESUME_P:%.*]]> = phi [ vp<[[RESUME_1]]>, middle.block ], [ ir<0>, ir-bb ] +; DBG-NEXT: EMIT-SCALAR vp<[[RESUME_P:%.*]]> = phi [ vp<[[RESUME_1_PART]]>, middle.block ], [ ir<0>, ir-bb ] ; DBG-NEXT: Successor(s): ir-bb ; DBG-EMPTY: ; DBG-NEXT: ir-bb: diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/bf16-instructions.s new file mode 100644 index 0000000000000..7b618df99fcfb --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/bf16-instructions.s @@ -0,0 +1,11 @@ +bfcvt h0, s0 +bfcvtn v0.4h, v0.4s +bfcvtn2 v0.8h, v0.4s +bfdot v0.2s, v24.4h, v14.2h[2] +bfdot v0.2s, v0.4h, v0.4h +bfdot v0.4s, v0.8h, v0.8h +bfmlalb v0.4s, v0.8h, v0.8h +bfmlalb v0.4s, v0.8h, v0.h[3] +bfmlalt v0.4s, v0.8h, v0.8h +bfmlalt v0.4s, v0.8h, v0.h[3] +bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/complxnum-instructions.s new file mode 100644 index 0000000000000..82b807652ab4b --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/complxnum-instructions.s @@ -0,0 +1,4 @@ +fcadd v0.2s, v0.2s, v0.2s, 90 +fcadd v0.4s, v0.4s, v0.4s, 270 +fcmla v0.2s, v0.2s, v0.2s, #90 +fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/fp16fml-instructions.s new file mode 100644 index 0000000000000..3318c719e367e --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/fp16fml-instructions.s @@ -0,0 +1,16 @@ +fmlal v0.2s, v0.2h, v0.h[1] +fmlal v0.4s, v0.4h, v0.h[3] +fmlal v0.2s, v0.2h, v0.2h +fmlal v0.4s, v0.4h, v0.4h +fmlal2 v0.2s, v0.2h, v0.h[1] +fmlal2 v0.4s, v0.4h, v0.h[3] +fmlal2 v0.2s, v0.2h, v0.2h +fmlal2 v0.4s, v0.4h, v0.4h +fmlsl v0.2s, v0.2h, v0.h[1] +fmlsl v0.4s, v0.4h, v0.h[3] +fmlsl v0.2s, v0.2h, v0.2h +fmlsl v0.4s, v0.4h, v0.4h +fmlsl2 v0.2s, v0.2h, v0.h[1] +fmlsl2 v0.4s, v0.4h, v0.h[3] +fmlsl2 v0.2s, v0.2h, v0.2h +fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/fptoint-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/fptoint-instructions.s new file mode 100644 index 0000000000000..fc7cfa2624088 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/fptoint-instructions.s @@ -0,0 +1,12 @@ +frint32x v0.2d, v0.2d +frint32x v0.2s, v0.2s +frint32x v0.4s, v0.4s +frint32z v0.2d, v0.2d +frint32z v0.2s, v0.2s +frint32z v0.4s, v0.4s +frint64x v0.2d, v0.2d +frint64x v0.2s, v0.2s +frint64x v0.4s, v0.4s +frint64z v0.2d, v0.2d +frint64z v0.2s, v0.2s +frint64z v0.4s, v0.4s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/i8mm-instructions.s new file mode 100644 index 0000000000000..19ab298f1a476 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/i8mm-instructions.s @@ -0,0 +1,9 @@ +smmla v0.4s, v0.16b, v0.16b +sudot v0.2s, v0.8b, v0.4b[2] +sudot v0.4s, v0.16b, v0.4b[2] +ummla v0.4s, v0.16b, v0.16b +usdot v0.2s, v0.8b, v0.4b[2] +usdot v0.2s, v0.8b, v0.8b +usdot v0.4s, v0.16b, v0.16b +usdot v0.4s, v0.16b, v0.4b[2] +usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/neon-instructions.s new file mode 100644 index 0000000000000..b034633a80e67 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/Inputs/neon-instructions.s @@ -0,0 +1,1559 @@ +abs d29, d24 +abs v0.16b, v0.16b +abs v0.2d, v0.2d +abs v0.2s, v0.2s +abs v0.4h, v0.4h +abs v0.4s, v0.4s +abs v0.8b, v0.8b +abs v0.8h, v0.8h +add d17, d31, d29 +add v0.8b, v0.8b, v0.8b +addhn v0.2s, v0.2d, v0.2d +addhn v0.4h, v0.4s, v0.4s +addhn v0.8b, v0.8h, v0.8h +addhn2 v0.16b, v0.8h, v0.8h +addhn2 v0.4s, v0.2d, v0.2d +addhn2 v0.8h, v0.4s, v0.4s +addp v7.2s, v1.2s, v2.2s +addp v0.2d, v0.2d, v0.2d +addp v0.8b, v0.8b, v0.8b +addp d1, v14.2d +addv s0, v0.4s +addv h0, v0.4h +addv h0, v0.8h +addv b0, v0.8b +addv b0, v0.16b +aesd v0.16b, v0.16b +aese v0.16b, v0.16b +aesimc v0.16b, v0.16b +aesmc v0.16b, v0.16b +and v0.8b, v0.8b, v0.8b +bic v0.4h, #15, lsl #8 +bic v23.8h, #101 +bic v0.8b, v0.8b, v0.8b +bic v25.16b, v10.16b, v9.16b +bic v24.2s, #70 +bit v5.8b, v12.8b, v22.8b +bif v0.8b, v25.8b, v4.8b +bif v0.16b, v0.16b, v0.16b +bit v0.16b, v0.16b, v0.16b +bsl v0.8b, v0.8b, v0.8b +bsl v27.16b, v13.16b, v21.16b +cls v0.16b, v0.16b +cls v0.2s, v0.2s +cls v0.4h, v0.4h +cls v0.4s, v0.4s +cls v0.8b, v0.8b +cls v0.8h, v0.8h +clz v0.16b, v0.16b +clz v0.2s, v0.2s +clz v0.4h, v0.4h +clz v0.4s, v0.4s +clz v0.8b, v0.8b +clz v0.8h, v0.8h +cmeq v9.8h, v16.8h, v24.8h +cmeq v14.4h, v18.4h, #0 +cmeq d20, d21, 0 +cmeq d20, d21, d22 +cmeq v0.16b, v0.16b, 0 +cmeq v0.16b, v0.16b, v0.16b +cmge v22.8h, v16.8h, v3.8h +cmge v22.16b, v30.16b, #0 +cmge d20, d21, 0 +cmge d20, d21, d22 +cmge v0.4h, v0.4h, v0.4h +cmge v0.8b, v0.8b, 0 +cmgt v3.2d, v29.2d, v11.2d +cmgt d20, d21, 0 +cmgt d20, d21, d22 +cmgt v0.2s, v0.2s, 0 +cmgt v0.4s, v0.4s, v0.4s +cmhi v28.4h, v25.4h, v21.4h +cmhi d20, d21, d22 +cmhi v0.8h, v0.8h, v0.8h +cmhs d20, d21, d22 +cmhs v0.8b, v0.8b, v0.8b +cmle v21.2s, v19.2s, #0 +cmle d20, d21, 0 +cmle v0.2d, v0.2d, 0 +cmlt v26.4h, v12.4h, #0 +cmlt d20, d21, 0 +cmlt v0.8h, v0.8h, 0 +cmtst d20, d21, d22 +cmtst v0.2s, v0.2s, v0.2s +cmtst v13.2d, v13.2d, v13.2d +cnt v0.16b, v0.16b +cnt v0.8b, v0.8b +dup v0.16b,w28 +dup v0.2d,x28 +dup v0.2s,w28 +dup v0.4h,w28 +dup v0.4s,w28 +dup v0.8b,w28 +dup v0.8h,w28 +dup b0, v0.b[1] +dup d0, v0.d[1] +dup h0, v0.h[1] +dup s0, v0.s[1] +dup v0.16b, v0.b[1] +dup v0.2d, v0.d[1] +dup v0.2s, v0.s[1] +dup v0.4h, v0.h[1] +dup v0.4s, v0.s[1] +dup v0.8b, v0.b[1] +dup v0.8h, v0.h[1] +eor v0.16b, v0.16b, v0.16b +ext v0.16b, v0.16b, v0.16b, #3 +ext v0.8b, v0.8b, v0.8b, #3 +fabd d29, d24, d20 +fabd s29, s24, s20 +fabd h27, h20, h17 +fabd v13.8h, v28.8h, v12.8h +fabd v0.4s, v0.4s, v0.4s +fabs h25, h7 +fabs v0.2d, v0.2d +fabs v0.2s, v0.2s +fabs v0.4h, v0.4h +fabs v0.4s, v0.4s +fabs v0.8h, v0.8h +facge d20, d21, d22 +facge s10, s11, s12 +facge h24, h26, h29 +facge v25.4h, v16.4h, v11.4h +facge v19.2s, v24.2s, v5.2s +facge v0.4s, v0.4s, v0.4s +facgt d20, d21, d22 +facgt s10, s11, s12 +facgt h0, h4, h10 +facgt v0.2d, v0.2d, v0.2d +facgt v22.8h, v14.8h, v31.8h +facgt v22.4s, v8.4s, v2.4s +fadd v0.4s, v0.4s, v0.4s +faddp h10, v19.2h +faddp d11, v28.2d +faddp v0.2s, v0.2s, v0.2s +faddp v0.4s, v0.4s, v0.4s +faddp v16.2d, v11.2d, v5.2d +fcmeq h30, h6, h1 +fcmeq h19, h23, #0.0 +fcmeq d20, d21, #0.0 +fcmeq d20, d21, d22 +fcmeq s10, s11, #0.0 +fcmeq s10, s11, s12 +fcmeq v0.2s, v0.2s, #0.0 +fcmeq v0.2s, v0.2s, v0.2s +fcmeq v12.4s, v11.4s, v26.4s +fcmeq v18.2d, v17.2d, #0.0 +fcmge h10, h23, #0.0 +fcmge h1, h16, h12 +fcmge d20, d21, #0.0 +fcmge d20, d21, d22 +fcmge s10, s11, #0.0 +fcmge s10, s11, s12 +fcmge v0.2d, v0.2d, #0.0 +fcmge v17.2d, v11.2d, v13.2d +fcmge v0.4s, v0.4s, v0.4s +fcmge v18.4h, v27.4h, #0.0 +fcmge v20.8h, v19.8h, v22.8h +fcmge v17.2s, v11.2s, #0.0 +fcmgt h4, h5, h0 +fcmgt h0, h18, #0.0 +fcmgt d20, d21, #0.0 +fcmgt d20, d21, d22 +fcmgt s10, s11, #0.0 +fcmgt s10, s11, s12 +fcmgt v0.4s, v0.4s, #0.0 +fcmgt v0.4s, v0.4s, v0.4s +fcmgt v24.8h, v24.8h, v28.8h +fcmgt v0.8h, v11.8h, #0.0 +fcmgt v19.2d, v31.2d, #0.0 +fcmle v16.8h, v11.8h, #0.0 +fcmle v22.4s, v30.4s, #0.0 +fcmle d20, d21, #0.0 +fcmle s10, s11, #0.0 +fcmle v0.2d, v0.2d, #0.0 +fcmle h18, h28, #0.0 +fcmlt h23, h7, #0.0 +fcmlt d20, d21, #0.0 +fcmlt s10, s11, #0.0 +fcmlt v0.4s, v0.4s, #0.0 +fcmlt v8.4h, v2.4h, #0.0 +fcmlt v7.2d, v16.2d, #0.0 +fcvtas d21, d14 +fcvtas s12, s13 +fcvtas h12, h13 +fcvtas v0.2d, v0.2d +fcvtas v0.2s, v0.2s +fcvtas v0.4h, v0.4h +fcvtas v0.4s, v0.4s +fcvtas v0.8h, v0.8h +fcvtau d21, d14 +fcvtau s12, s13 +fcvtau h12, h13 +fcvtau v0.2d, v0.2d +fcvtau v0.2s, v0.2s +fcvtau v0.4h, v0.4h +fcvtau v0.4s, v0.4s +fcvtau v0.8h, v0.8h +fcvtl v0.2d, v0.2s +fcvtl v0.4s, v0.4h +fcvtl2 v0.2d, v0.4s +fcvtl2 v0.4s, v0.8h +fcvtms d21, d14 +fcvtms s22, s13 +fcvtms h22, h13 +fcvtms v0.2d, v0.2d +fcvtms v0.2s, v0.2s +fcvtms v0.4h, v0.4h +fcvtms v0.4s, v0.4s +fcvtms v0.8h, v0.8h +fcvtmu d21, d14 +fcvtmu s12, s13 +fcvtmu h12, h13 +fcvtmu v0.2d, v0.2d +fcvtmu v0.2s, v0.2s +fcvtmu v0.4h, v0.4h +fcvtmu v0.4s, v0.4s +fcvtmu v0.8h, v0.8h +fcvtn v0.2s, v0.2d +fcvtn v0.4h, v0.4s +fcvtn2 v0.4s, v0.2d +fcvtn2 v0.8h, v0.4s +fcvtns d21, d14 +fcvtns s22, s13 +fcvtns h22, h13 +fcvtns v0.2d, v0.2d +fcvtns v0.2s, v0.2s +fcvtns v0.4h, v0.4h +fcvtns v0.4s, v0.4s +fcvtns v0.8h, v0.8h +fcvtnu d21, d14 +fcvtnu s12, s13 +fcvtnu h12, h13 +fcvtnu v0.2d, v0.2d +fcvtnu v0.2s, v0.2s +fcvtnu v0.4h, v0.4h +fcvtnu v0.4s, v0.4s +fcvtnu v0.8h, v0.8h +fcvtps d21, d14 +fcvtps s22, s13 +fcvtps h22, h13 +fcvtps v0.2d, v0.2d +fcvtps v0.2s, v0.2s +fcvtps v0.4h, v0.4h +fcvtps v0.4s, v0.4s +fcvtps v0.8h, v0.8h +fcvtpu d21, d14 +fcvtpu s12, s13 +fcvtpu h12, h13 +fcvtpu v0.2d, v0.2d +fcvtpu v0.2s, v0.2s +fcvtpu v0.4h, v0.4h +fcvtpu v0.4s, v0.4s +fcvtpu v0.8h, v0.8h +fcvtxn s22, d13 +fcvtxn v0.2s, v0.2d +fcvtxn2 v0.4s, v0.2d +fcvtzs d21, d12, #1 +fcvtzs d21, d14 +fcvtzs s12, s13 +fcvtzs s21, s12, #1 +fcvtzs h21, h14 +fcvtzs h21, h12, #1 +fcvtzs v0.2d, v0.2d +fcvtzs v0.2d, v0.2d, #3 +fcvtzs v0.2s, v0.2s +fcvtzs v0.2s, v0.2s, #3 +fcvtzs v0.4h, v0.4h +fcvtzs v20.4h, v24.4h, #11 +fcvtzs v0.4s, v0.4s +fcvtzs v0.4s, v0.4s, #3 +fcvtzs v0.8h, v0.8h +fcvtzs v18.8h, v10.8h, #7 +fcvtzu d21, d12, #1 +fcvtzu d21, d14 +fcvtzu s12, s13 +fcvtzu s21, s12, #1 +fcvtzu h12, h13 +fcvtzu h21, h12, #1 +fcvtzu v0.2d, v0.2d +fcvtzu v0.2d, v0.2d, #3 +fcvtzu v0.2s, v0.2s +fcvtzu v0.2s, v0.2s, #3 +fcvtzu v0.4h, v0.4h +fcvtzu v19.4h, v26.4h, #9 +fcvtzu v0.4s, v0.4s +fcvtzu v0.4s, v0.4s, #3 +fcvtzu v0.8h, v0.8h +fcvtzu v27.8h, v6.8h, #11 +fdiv v0.2d, v0.2d, v0.2d +fdiv v0.2s, v0.2s, v0.2s +fdiv v0.4h, v0.4h, v0.4h +fdiv v0.4s, v0.4s, v0.4s +fdiv v0.8h, v0.8h, v0.8h +fmax v0.2d, v0.2d, v0.2d +fmax v0.2s, v0.2s, v0.2s +fmax v0.4s, v0.4s, v0.4s +fmaxnm v0.2d, v0.2d, v0.2d +fmaxnm v0.2s, v0.2s, v0.2s +fmaxnm v0.4s, v0.4s, v0.4s +fmaxnmp h25, v19.2h +fmaxnmp d17, v29.2d +fmaxnmp v0.2d, v0.2d, v0.2d +fmaxnmp v0.2s, v0.2s, v0.2s +fmaxnmp v0.4s, v0.4s, v0.4s +fmaxnmv h0, v13.4h +fmaxnmv h12, v11.8h +fmaxnmv s28, v31.4s +fmaxp v0.2d, v0.2d, v0.2d +fmaxp v0.2s, v0.2s, v0.2s +fmaxp v0.4s, v0.4s, v0.4s +fmaxp h15, v25.2h +fmaxp s6, v2.2s +fmaxv h0, v0.4h +fmaxv h0, v0.8h +fmaxv s0, v0.4s +fmin v0.2d, v0.2d, v0.2d +fmin v0.2s, v0.2s, v0.2s +fmin v0.4s, v0.4s, v0.4s +fminnm v0.2d, v0.2d, v0.2d +fminnm v0.2s, v0.2s, v0.2s +fminnm v0.4s, v0.4s, v0.4s +fminnmp h20, v14.2h +fminnmp d15, v8.2d +fminnmp v0.2d, v0.2d, v0.2d +fminnmp v0.2s, v0.2s, v0.2s +fminnmp v0.4s, v0.4s, v0.4s +fminnmv h19, v25.4h +fminnmv h23, v17.8h +fminnmv s29, v17.4s +fminp v0.2d, v0.2d, v0.2d +fminp v0.2s, v0.2s, v0.2s +fminp v0.4s, v0.4s, v0.4s +fminp h7, v10.2h +fminp s17, v7.2s +fminv h3, v30.4h +fminv h29, v12.8h +fminv s16, v19.4s +fmla d0, d1, v0.d[1] +fmla h23, h24, v15.h[4] +fmla s0, s1, v0.s[3] +fmla v0.2s, v0.2s, v0.2s +fmla v29.8h, v15.8h, v10.h[4] +fmla v2.2s, v16.2s, v28.s[0] +fmla v14.4s, v14.4s, v5.s[3] +fmla v1.4s, v24.4s, v12.4s +fmla v10.2d, v14.2d, v21.d[1] +fmls d0, d4, v0.d[1] +fmls h8, h14, v7.h[4] +fmls s3, s5, v0.s[3] +fmls v0.2s, v0.2s, v0.2s +fmls v30.8h, v18.8h, v4.h[6] +fmls v10.2s, v27.2s, v0.s[0] +fmls v27.4s, v7.4s, v24.s[0] +fmls v10.2d, v22.2d, v29.d[0] +fmls v6.8h, v15.8h, v23.8h +fmov v0.2d, #-1.25 +fmov v0.2s, #13.0 +fmov v0.4s, #1.0 +fmul h18, h4, v7.h[3] +fmul v10.4h, v2.4h, v7.h[5] +fmul v5.2s, v12.2s, v9.s[0] +fmul v15.4s, v30.4s, v2.s[3] +fmul v11.2d, v31.2d, v24.d[1] +fmul h28, h14, h3 +fmul d0, d1, v0.d[1] +fmul s0, s1, v0.s[3] +fmul v0.2s, v0.2s, v0.2s +fmulx d0, d4, v0.d[1] +fmulx d23, d11, d1 +fmulx s20, s22, s15 +fmulx h18, h17, v7.h[1] +fmulx h20, h25, h0 +fmulx s3, s5, v0.s[3] +fmulx v0.2d, v0.2d, v0.2d +fmulx v28.4h, v25.4h, v15.h[1] +fmulx v3.2s, v22.2s, v23.s[3] +fmulx v0.2s, v0.2s, v0.2s +fmulx v0.4s, v0.4s, v0.4s +fmulx v5.4s, v28.4s, v15.s[3] +fmulx v22.2d, v18.2d, v25.d[1] +fneg v0.2d, v0.2d +fneg v0.2s, v0.2s +fneg v0.4h, v0.4h +fneg v0.4s, v0.4s +fneg v0.8h, v0.8h +frecpe h20, h8 +frecpe d13, d13 +frecpe s19, s14 +frecpe v0.2d, v0.2d +frecpe v0.2s, v0.2s +frecpe v0.4h, v0.4h +frecpe v0.4s, v0.4s +frecpe v0.8h, v0.8h +frecps h29, h19, h8 +frecpx h18, h11 +frecps v12.8h, v25.8h, v4.8h +frecps v0.4s, v0.4s, v0.4s +frecps d22, d30, d21 +frecps s21, s16, s13 +frecps v7.2d, v29.2d, v18.2d +frecpx d16, d19 +frecpx s18, s10 +frinta v0.2d, v0.2d +frinta v0.2s, v0.2s +frinta v0.4h, v0.4h +frinta v0.4s, v0.4s +frinta v0.8h, v0.8h +frinti v0.2d, v0.2d +frinti v0.2s, v0.2s +frinti v0.4h, v0.4h +frinti v0.4s, v0.4s +frinti v0.8h, v0.8h +frintm v0.2d, v0.2d +frintm v0.2s, v0.2s +frintm v0.4h, v0.4h +frintm v0.4s, v0.4s +frintm v0.8h, v0.8h +frintn v0.2d, v0.2d +frintn v0.2s, v0.2s +frintn v0.4h, v0.4h +frintn v0.4s, v0.4s +frintn v0.8h, v0.8h +frintp v0.2d, v0.2d +frintp v0.2s, v0.2s +frintp v0.4h, v0.4h +frintp v0.4s, v0.4s +frintp v0.8h, v0.8h +frintx v0.2d, v0.2d +frintx v0.2s, v0.2s +frintx v0.4h, v0.4h +frintx v0.4s, v0.4s +frintx v0.8h, v0.8h +frintz v0.2d, v0.2d +frintz v0.2s, v0.2s +frintz v0.4h, v0.4h +frintz v0.4s, v0.4s +frintz v0.8h, v0.8h +frsqrte h23, h26 +frsqrte d21, d12 +frsqrte s22, s13 +frsqrte v0.2d, v0.2d +frsqrte v0.2s, v0.2s +frsqrte v0.4h, v0.4h +frsqrte v0.4s, v0.4s +frsqrts v20.4s, v26.4s, v27.4s +frsqrts v8.4h, v9.4h, v30.4h +frsqrte v0.8h, v0.8h +frsqrts h28, h26, h1 +frsqrts d8, d22, d18 +frsqrts s21, s5, s12 +frsqrts v0.2d, v0.2d, v0.2d +fsqrt v0.2d, v0.2d +fsqrt v0.2s, v0.2s +fsqrt v0.4h, v0.4h +fsqrt v0.4s, v0.4s +fsqrt v0.8h, v0.8h +fsub v13.8h, v15.8h, v17.8h +fsub v0.2s, v0.2s, v0.2s +ld1 { v0.16b }, [x0] +ld1 { v0.16b, v1.16b }, [x14] +ld1 { v19.16b, v20.16b, v21.16b }, [x10] +ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +ld1 { v24.8h }, [x27] +ld1 { v1.8h, v2.8h }, [x27] +ld1 { v0.8h, v1.8h }, [sp], #32 +ld1 { v21.8h, v22.8h, v23.8h }, [x22] +ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +ld1 { v3.4s }, [x4] +ld1 { v11.4s, v12.4s }, [x30] +ld1 { v0.4s, v1.4s, v2.4s }, [x24] +ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +ld1 { v3.2d }, [x28] +ld1 { v13.2d, v14.2d }, [x13] +ld1 { v12.2d, v13.2d, v14.2d }, [x15] +ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +ld1 { v0.1d }, [x15], x2 +ld1 { v27.1d, v28.1d }, [x7] +ld1 { v14.1d, v15.1d, v16.1d }, [x3] +ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +ld1 { v0.2s, v1.2s }, [x15] +ld1 { v16.2s, v17.2s, v18.2s }, [x27] +ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +ld1 { v25.4h, v26.4h }, [x3] +ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +ld1 { v0.4h, v1.4h, v2.4h }, [sp] +ld1 { v24.8b, v25.8b }, [x6] +ld1 { v7.8b, v8.8b, v9.8b }, [x12] +ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] +ld1 { v0.4s, v1.4s }, [sp], #32 +ld1 { v0.4s, v1.4s, v2.4s }, [sp] +ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +ld1 { v0.b }[7], [x0] +ld1 { v0.h }[3], [x0], #2 +ld1 { v18.h }[3], [x1] +ld1 { v0.s }[1], [x15] +ld1 { v0.d }[0], [x15], #8 +ld1 { v11.d }[0], [x13] +ld1 { v0.8h }, [x15], x2 +ld1 { v0.8h, v1.8h }, [x15] +ld1 { v0.b }[9], [x0] +ld1 { v0.b }[9], [x0], #1 +ld1r { v0.16b }, [x0] +ld1r { v0.8h }, [x0], #2 +ld1r { v0.4s }, [x15] +ld1r { v3.1d }, [x15] +ld1r { v0.2d }, [x15], x16 +ld1r { v18.2d }, [x0] +ld1r { v8.8b }, [x23] +ld1r { v28.4h }, [x9] +ld1r { v3.8h }, [x16] +ld1r { v10.2s }, [x20] +ld2 { v0.4h, v1.4h }, [x21] +ld2 { v8.8h, v9.8h }, [x28] +ld2 { v2.2s, v3.2s }, [x16] +ld2 { v22.4s, v23.4s }, [x4] +ld2 { v22.2d, v23.2d }, [x17] +ld2 { v29.b, v30.b }[3], [x1] +ld2 { v26.s, v27.s }[1], [x17] +ld2 { v1.d, v2.d }[0], [x10] +ld2 { v0.16b, v1.16b }, [x0] +ld2 { v13.8b, v14.8b }, [x4] +ld2 { v0.8b, v1.8b }, [x0], #16 +ld1r { v0.16b }, [x0], #1 +ld1r { v0.8h }, [x15] +ld1r { v0.8h }, [x15], #2 +ld2 { v0.16b, v1.16b }, [x0], x1 +ld2 { v0.8b, v1.8b }, [x0] +ld2 { v0.h, v1.h }[7], [x15] +ld2 { v0.h, v1.h }[7], [x15], x8 +ld2 { v0.h, v1.h }[7], [x15], #4 +ld2r { v0.8b, v1.8b }, [x0] +ld2r { v10.16b, v11.16b }, [x23] +ld2r { v0.4h, v1.4h }, [x0], #4 +ld2r { v25.4h, v26.4h }, [x11] +ld2r { v23.8h, v24.8h }, [x10] +ld2r { v0.2s, v1.2s }, [sp] +ld2r { v8.4s, v9.4s }, [x17] +ld2r { v0.1d, v1.1d }, [sp], x8 +ld2r { v9.1d, v10.1d }, [x25] +ld2r { v26.2d, v27.2d }, [x8] +ld3 { v8.8b, v9.8b, v10.8b }, [x0] +ld3 { v15.16b, v16.16b, v17.16b }, [x5] +ld2r { v0.2d, v1.2d }, [x0] +ld2r { v0.2d, v1.2d }, [x0], #16 +ld2r { v0.4s, v1.4s }, [sp] +ld2r { v0.4s, v1.4s }, [sp], #8 +ld3 { v0.4h, v1.4h, v2.4h }, [x15] +ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +ld3 { v7.8h, v8.8h, v9.8h }, [x21] +ld3 { v16.2s, v17.2s, v18.2s }, [x0] +ld3 { v12.4s, v13.4s, v14.4s }, [x25] +ld3 { v17.b, v18.b, v19.b }[2], [x27] +ld3 { v18.h, v19.h, v20.h }[5], [x16] +ld3 { v10.2d, v11.2d, v12.2d }, [x18] +ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +ld3 { v0.s, v1.s, v2.s }[3], [sp] +ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +ld3 { v5.d, v6.d, v7.d }[1], [x14] +ld3r { v0.8b, v1.8b, v2.8b }, [x15] +ld3r { v17.16b, v18.16b, v19.16b }, [x3] +ld3r { v0.4h, v1.4h, v2.4h }, [x15] +ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +ld3r { v3.4h, v4.4h, v5.4h }, [x1] +ld3r { v6.8h, v7.8h, v8.8h }, [x28] +ld3r { v0.2s, v1.2s, v2.2s }, [x0] +ld3r { v28.4s, v29.4s, v30.4s }, [x2] +ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +ld3r { v1.1d, v2.1d, v3.1d }, [x28] +ld3r { v8.2d, v9.2d, v10.2d }, [x3] +ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] +ld3r { v0.8b, v1.8b, v2.8b }, [x0] +ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 +ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] +ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 +ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] +ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 +ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 +ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 +mla v0.8b, v0.8b, v0.8b +mla v15.8h, v22.8h, v4.h[3] +mla v28.2s, v10.2s, v2.s[0] +mls v0.4h, v0.4h, v0.4h +mls v25.8h, v29.8h, v0.h[4] +mls v22.2s, v29.2s, v0.s[3] +mls v26.4s, v5.4s, v28.4s +mov b0, v0.b[15] +mov d6, v0.d[1] +mov h2, v0.h[5] +mov s17, v0.s[2] +mov w8, v8.s[0] +mov x30, v18.d[0] +mov v2.b[0], v0.b[0] +mov v2.h[1], v0.h[1] +mov v2.s[2], v0.s[2] +mov v2.d[1], v0.d[1] +mov v0.b[0], w8 +mov v0.h[1], w8 +mov v0.s[2], w8 +mov v0.d[1], x8 +mov v0.16b, v0.16b +mov v0.8b, v0.8b +movi d15, #0xff00ff00ff00ff +movi v0.16b, #31 +movi v14.8h, #174 +movi v13.4h, #74, lsl #8 +movi v0.2d, #0xff0000ff0000ffff +movi v0.2s, #8, msl #8 +movi v19.2s, #226 +movi v1.4s, #122, msl #8 +movi v0.4s, #255, lsl #24 +movi v0.8b, #255 +mul v0.8b, v0.8b, v0.8b +mul v26.4h, v20.4h, v14.h[5] +mul v5.8h, v21.8h, v3.h[7] +mul v29.2s, v10.2s, v3.s[1] +mul v30.4s, v11.4s, v4.s[0] +mul v30.4s, v11.4s, v4.4s +mul v3.8h, v9.8h, v8.8h +mvni v9.4h, #237 +mvni v8.8h, #171, lsl #8 +mvni v22.4s, #15, lsl #8 +mvni v0.2s, 0 +mvni v0.4s, #16, msl #16 +neg d29, d24 +neg v0.16b, v0.16b +neg v0.2d, v0.2d +neg v0.2s, v0.2s +neg v0.4h, v0.4h +neg v0.4s, v0.4s +neg v0.8b, v0.8b +neg v0.8h, v0.8h +not v0.16b, v0.16b +not v0.8b, v0.8b +orn v0.16b, v0.16b, v0.16b +orn v29.8b, v19.8b, v16.8b +orr v0.16b, v0.16b, v0.16b +orr v9.4h, #18 +orr v0.8h, #31 +orr v4.4s, #0 +pmul v0.16b, v0.16b, v0.16b +pmul v0.8b, v0.8b, v0.8b +pmull v0.8h, v0.8b, v0.8b +pmull2 v0.8h, v0.16b, v0.16b +raddhn v0.2s, v0.2d, v0.2d +raddhn v0.4h, v0.4s, v0.4s +raddhn v0.8b, v0.8h, v0.8h +raddhn2 v0.16b, v0.8h, v0.8h +raddhn2 v0.4s, v0.2d, v0.2d +raddhn2 v0.8h, v0.4s, v0.4s +rbit v0.16b, v0.16b +rbit v0.8b, v0.8b +rev16 v21.8b, v1.8b +rev16 v30.16b, v31.16b +rev32 v0.4h, v9.4h +rev32 v21.8b, v1.8b +rev32 v30.16b, v31.16b +rev32 v4.8h, v7.8h +rev64 v0.16b, v31.16b +rev64 v1.8b, v9.8b +rev64 v13.4h, v21.4h +rev64 v2.8h, v4.8h +rev64 v4.2s, v0.2s +rev64 v6.4s, v8.4s +rshrn v0.2s, v0.2d, #3 +rshrn v0.4h, v0.4s, #3 +rshrn v0.8b, v0.8h, #3 +rshrn2 v0.16b, v0.8h, #3 +rshrn2 v0.4s, v0.2d, #3 +rshrn2 v0.8h, v0.4s, #3 +rsubhn v0.2s, v0.2d, v0.2d +rsubhn v0.4h, v0.4s, v0.4s +rsubhn v0.8b, v0.8h, v0.8h +rsubhn2 v0.16b, v0.8h, v0.8h +rsubhn2 v0.4s, v0.2d, v0.2d +rsubhn2 v0.8h, v0.4s, v0.4s +saba v0.16b, v0.16b, v0.16b +sabal v0.2d, v0.2s, v0.2s +sabal v0.4s, v0.4h, v0.4h +sabal v0.8h, v0.8b, v0.8b +sabal2 v0.2d, v0.4s, v0.4s +sabal2 v0.4s, v0.8h, v0.8h +sabal2 v0.8h, v0.16b, v0.16b +sabd v0.4h, v0.4h, v0.4h +sabd v12.2s, v11.2s, v27.2s +sabdl v0.2d, v0.2s, v0.2s +sabdl v0.4s, v0.4h, v0.4h +sabdl v0.8h, v0.8b, v0.8b +sabdl2 v0.2d, v0.4s, v0.4s +sabdl2 v0.4s, v0.8h, v0.8h +sabdl2 v0.8h, v0.16b, v0.16b +sadalp v0.1d, v0.2s +sadalp v0.2d, v0.4s +sadalp v0.2s, v0.4h +sadalp v0.4h, v0.8b +sadalp v0.4s, v0.8h +sadalp v0.8h, v0.16b +saddl v0.2d, v0.2s, v0.2s +saddl v0.4s, v0.4h, v0.4h +saddl v0.8h, v0.8b, v0.8b +saddl2 v0.2d, v0.4s, v0.4s +saddl2 v0.4s, v0.8h, v0.8h +saddl2 v0.8h, v0.16b, v0.16b +saddlp v0.1d, v0.2s +saddlp v0.2d, v0.4s +saddlp v0.2s, v0.4h +saddlp v0.4h, v0.8b +saddlp v0.4s, v0.8h +saddlp v0.8h, v0.16b +saddlv d0, v0.4s +saddlv s0, v0.4h +saddlv s0, v0.8h +saddlv h0, v0.8b +saddlv h0, v0.16b +saddw v0.2d, v0.2d, v0.2s +saddw v0.4s, v0.4s, v0.4h +saddw v0.8h, v0.8h, v0.8b +saddw2 v0.2d, v0.2d, v0.4s +saddw2 v0.4s, v0.4s, v0.8h +saddw2 v0.8h, v0.8h, v0.16b +scvtf h4, h8, #9 +scvtf h5, h14 +scvtf d21, d12 +scvtf d21, d12, #64 +scvtf s22, s13 +scvtf s22, s13, #32 +scvtf v0.2d, v0.2d +scvtf v0.2d, v0.2d, #3 +scvtf v0.2s, v0.2s +scvtf v0.2s, v0.2s, #3 +scvtf v0.4h, v0.4h +scvtf v0.4s, v0.4s +scvtf v0.4s, v0.4s, #3 +scvtf v25.4h, v13.4h, #8 +scvtf v0.8h, v0.8h +scvtf v4.8h, v8.8h, #10 +sdot v0.2s, v0.8b, v0.4b[2] +sdot v0.2s, v0.8b, v0.8b +sdot v0.4s, v0.16b, v0.16b +sdot v0.4s, v0.16b, v0.4b[2] +shadd v0.8b, v0.8b, v0.8b +shadd v25.16b, v1.16b, v10.16b +shl d7, d10, #12 +shl v23.8b, v18.8b, #6 +shl v0.16b, v0.16b, #3 +shl v0.2d, v0.2d, #3 +shl v0.4h, v0.4h, #3 +shl v0.8h, v23.8h, #10 +shl v0.4s, v0.4s, #3 +shll v0.4s, v0.4h, #16 +shll v0.8h, v0.8b, #8 +shll v0.2d, v0.2s, #32 +shll2 v0.2d, v0.4s, #32 +shll2 v0.4s, v0.8h, #16 +shll2 v0.8h, v0.16b, #8 +shrn v0.2s, v0.2d, #3 +shrn v0.4h, v0.4s, #3 +shrn v0.8b, v0.8h, #3 +shrn2 v0.16b, v0.8h, #3 +shrn2 v0.4s, v0.2d, #3 +shrn2 v0.8h, v0.4s, #3 +shsub v0.2s, v0.2s, v0.2s +shsub v0.4h, v0.4h, v0.4h +shsub v15.8h, v5.8h, v27.8h +sli d10, d14, #12 +sli v0.16b, v0.16b, #3 +sli v0.2d, v0.2d, #3 +sli v0.2s, v0.2s, #3 +sli v0.4h, v0.4h, #3 +sli v0.4s, v0.4s, #3 +sli v0.8b, v0.8b, #3 +sli v0.8h, v0.8h, #3 +smax v0.2s, v0.2s, v0.2s +smax v0.4h, v0.4h, v0.4h +smax v0.8b, v0.8b, v0.8b +smax v30.16b, v3.16b, v30.16b +smaxp v0.2s, v0.2s, v0.2s +smaxp v0.4h, v0.4h, v0.4h +smaxp v21.8h, v16.8h, v7.8h +smaxp v0.8b, v0.8b, v0.8b +smaxv b0, v0.8b +smaxv b0, v0.16b +smaxv h0, v0.4h +smaxv h0, v0.8h +smaxv s0, v0.4s +smin v0.16b, v0.16b, v0.16b +smin v0.4s, v0.4s, v0.4s +smin v0.8h, v0.8h, v0.8h +sminp v0.16b, v0.16b, v0.16b +sminp v0.4s, v0.4s, v0.4s +sminp v0.8h, v0.8h, v0.8h +sminv b0, v0.8b +sminv b0, v0.16b +sminv h0, v0.4h +sminv h0, v0.8h +sminv s0, v0.4s +smlal v0.2d, v0.2s, v0.2s +smlal v0.2d, v25.2s, v1.s[1] +smlal v0.4s, v0.4h, v0.4h +smlal v16.4s, v9.4h, v11.h[4] +smlal v0.8h, v0.8b, v0.8b +smlal2 v0.2d, v0.4s, v0.4s +smlal2 v30.2d, v22.4s, v7.s[2] +smlal2 v0.4s, v0.8h, v0.8h +smlal2 v0.8h, v0.16b, v0.16b +smlsl v0.2d, v0.2s, v0.2s +smlsl v25.2d, v27.2s, v1.s[1] +smlsl v0.4s, v0.4h, v0.4h +smlsl v14.4s, v23.4h, v12.h[7] +smlsl v0.8h, v0.8b, v0.8b +smlal2 v1.4s, v9.8h, v0.h[6] +smlsl2 v12.4s, v11.8h, v12.h[0] +smlsl2 v0.2d, v0.4s, v0.4s +smlsl2 v11.2d, v28.4s, v7.s[2] +smlsl2 v0.4s, v0.8h, v0.8h +smlsl2 v0.8h, v0.16b, v0.16b +smull v0.2d, v0.2s, v0.2s +smull v31.2d, v23.2s, v6.s[2] +smull v0.4s, v0.4h, v0.4h +smull v3.4s, v26.4h, v1.h[5] +smull v0.8h, v0.8b, v0.8b +smull2 v0.2d, v0.4s, v0.4s +smull2 v11.2d, v1.4s, v7.s[0] +smull2 v0.4s, v0.8h, v0.8h +smull2 v13.4s, v18.8h, v0.h[3] +smull2 v0.8h, v0.16b, v0.16b +sqabs b19, b14 +sqabs d18, d12 +sqabs h21, h15 +sqabs s20, s12 +sqabs v0.16b, v0.16b +sqabs v0.2d, v0.2d +sqabs v0.2s, v0.2s +sqabs v0.4h, v0.4h +sqabs v0.4s, v0.4s +sqabs v0.8b, v0.8b +sqabs v0.8h, v0.8h +sqadd b20, b11, b15 +sqadd h12, h18, h10 +sqadd v0.16b, v0.16b, v0.16b +sqadd v0.2s, v0.2s, v0.2s +sqdmlal d19, s24, s12 +sqdmlal d8, s9, v0.s[1] +sqdmlal s0, h0, v0.h[3] +sqdmlal s17, h27, h12 +sqdmlal v0.2d, v0.2s, v0.2s +sqdmlal v11.2d, v24.2s, v0.s[3] +sqdmlal v0.4s, v0.4h, v0.4h +sqdmlal v20.4s, v30.4h, v12.h[3] +sqdmlal2 v0.2d, v0.4s, v0.4s +sqdmlal2 v23.2d, v30.4s, v6.s[0] +sqdmlal2 v0.4s, v0.8h, v0.8h +sqdmlal2 v2.4s, v17.8h, v5.h[6] +sqdmulh v8.4h, v16.4h, v5.h[4] +sqdmulh v16.2s, v24.2s, v7.s[2] +sqdmull v8.4s, v19.4h, v1.h[2] +sqdmull v20.2d, v10.2s, v6.s[2] +sqdmull2 v10.4s, v25.8h, v0.h[7] +sqdmull2 v4.2d, v29.4s, v2.s[3] +sqrdmulh v0.8h, v15.8h, v0.h[5] +sqrdmulh v6.2s, v29.2s, v4.s[2] +sqrdmulh v31.2s, v17.2s, v4.2s +sqdmlsl d12, s23, s13 +sqdmlsl d8, s9, v0.s[1] +sqdmlsl s0, h0, v0.h[3] +sqdmlsl s14, h12, h25 +sqdmlsl v0.2d, v0.2s, v0.2s +sqdmlsl v26.2d, v7.2s, v3.s[0] +sqdmlsl v0.4s, v0.4h, v0.4h +sqdmlsl v4.4s, v22.4h, v13.h[2] +sqdmlsl2 v0.2d, v0.4s, v0.4s +sqdmlsl2 v4.2d, v3.4s, v3.s[2] +sqdmlsl2 v0.4s, v0.8h, v0.8h +sqdmlsl2 v2.4s, v28.8h, v4.h[6] +sqdmulh h10, h11, h12 +sqdmulh h7, h15, v0.h[3] +sqdmulh s15, s14, v0.s[1] +sqdmulh s20, s21, s2 +sqdmulh v0.2s, v0.2s, v0.2s +sqdmulh v0.4s, v0.4s, v0.4s +sqdmull d1, s1, v0.s[1] +sqdmull d15, s22, s12 +sqdmull s1, h1, v0.h[3] +sqdmull s12, h22, h12 +sqdmull v0.2d, v0.2s, v0.2s +sqdmull v0.4s, v0.4h, v0.4h +sqdmull2 v0.2d, v0.4s, v0.4s +sqdmull2 v0.4s, v0.8h, v0.8h +sqneg b19, b14 +sqneg d18, d12 +sqneg h21, h15 +sqneg s20, s12 +sqneg v0.16b, v0.16b +sqneg v0.2d, v0.2d +sqneg v0.2s, v0.2s +sqneg v0.4h, v0.4h +sqneg v0.4s, v0.4s +sqneg v0.8b, v0.8b +sqneg v0.8h, v0.8h +sqrdmlah h0, h1, v2.h[3] +sqrdmlah v0.4h, v1.4h, v2.h[3] +sqrdmlah v0.8h, v1.8h, v2.h[3] +sqrdmlah s0, s1, v2.s[1] +sqrdmlah v0.2s, v1.2s, v2.s[1] +sqrdmlah v0.4s, v1.4s, v2.s[1] +sqrdmlah h0, h1, h2 +sqrdmlah v0.4h, v1.4h, v2.4h +sqrdmlah v0.8h, v1.8h, v2.8h +sqrdmlah s0, s1, s2 +sqrdmlah v0.2s, v1.2s, v2.2s +sqrdmlah v0.4s, v1.4s, v2.4s +sqrdmlsh h0, h1, v2.h[3] +sqrdmlsh v0.4h, v1.4h, v2.h[3] +sqrdmlsh v0.8h, v1.8h, v2.h[3] +sqrdmlsh s0, s1, v2.s[1] +sqrdmlsh v0.2s, v1.2s, v2.s[1] +sqrdmlsh v0.4s, v1.4s, v2.s[1] +sqrdmlsh h0, h1, h2 +sqrdmlsh v0.4h, v1.4h, v2.4h +sqrdmlsh v0.8h, v1.8h, v2.8h +sqrdmlsh s0, s1, s2 +sqrdmlsh v0.2s, v1.2s, v2.2s +sqrdmlsh v0.4s, v1.4s, v2.4s +sqrdmulh h10, h11, h12 +sqrdmulh h7, h15, v0.h[3] +sqrdmulh s15, s14, v0.s[1] +sqrdmulh s20, s21, s2 +sqrdmulh v0.4h, v0.4h, v0.4h +sqrdmulh v0.8h, v0.8h, v0.8h +sqrshl d31, d31, d31 +sqrshl h3, h4, h15 +sqrshl v0.2s, v0.2s, v0.2s +sqrshl v0.4h, v0.4h, v0.4h +sqrshl v0.8b, v0.8b, v0.8b +sqshl s17, s4, s23 +sqsub b3, b13, b12 +sqsub v20.8h, v18.8h, v12.8h +sqrshrn b10, h13, #2 +sqrshrn h15, s10, #6 +sqrshrn s15, d12, #9 +sqrshrn v0.2s, v0.2d, #3 +sqrshrn v0.4h, v0.4s, #3 +sqrshrn v0.8b, v0.8h, #3 +sqrshrn2 v0.16b, v0.8h, #3 +sqrshrn2 v0.4s, v0.2d, #3 +sqrshrn2 v0.8h, v0.4s, #3 +sqrshrun b17, h10, #6 +sqrshrun h10, s13, #15 +sqrshrun s22, d16, #31 +sqrshrun v0.2s, v0.2d, #3 +sqrshrun v0.4h, v0.4s, #3 +sqrshrun v0.8b, v0.8h, #3 +sqrshrun2 v0.16b, v0.8h, #3 +sqrshrun2 v0.4s, v0.2d, #3 +sqrshrun2 v0.8h, v0.4s, #3 +sqshl b11, b19, #7 +sqshl d15, d16, #51 +sqshl d31, d31, d31 +sqshl h13, h18, #11 +sqshl h3, h4, h15 +sqshl s14, s17, #22 +sqshl v0.16b, v0.16b, #3 +sqshl v23.16b, v23.16b, v23.16b +sqshl v0.2d, v0.2d, #3 +sqshl v0.2s, v0.2s, #3 +sqshl v0.2s, v0.2s, v0.2s +sqshl v0.4h, v0.4h, #3 +sqshl v0.4h, v0.4h, v0.4h +sqshl v0.4s, v0.4s, #3 +sqshl v0.8b, v0.8b, #3 +sqshl v0.8b, v0.8b, v0.8b +sqshl v0.8h, v0.8h, #3 +sqshlu b15, b18, #6 +sqshlu d11, d13, #32 +sqshlu h19, h17, #6 +sqshlu s16, s14, #25 +sqshlu v0.16b, v0.16b, #3 +sqshlu v0.2d, v0.2d, #3 +sqshlu v0.2s, v0.2s, #3 +sqshlu v0.4h, v0.4h, #3 +sqshlu v0.4s, v0.4s, #3 +sqshlu v0.8b, v0.8b, #3 +sqshlu v0.8h, v0.8h, #3 +sqshrn b10, h15, #5 +sqshrn h17, s10, #4 +sqshrn s18, d10, #31 +sqshrn v0.2s, v0.2d, #3 +sqshrn v0.4h, v0.4s, #3 +sqshrn v0.8b, v0.8h, #3 +sqshrn2 v0.16b, v0.8h, #3 +sqshrn2 v0.4s, v0.2d, #3 +sqshrn2 v0.8h, v0.4s, #3 +sqshrun b15, h10, #7 +sqshrun h20, s14, #3 +sqshrun s10, d15, #15 +sqshrun v0.2s, v0.2d, #3 +sqshrun v0.4h, v0.4s, #3 +sqshrun v0.8b, v0.8h, #3 +sqshrun2 v0.16b, v0.8h, #3 +sqshrun2 v0.4s, v0.2d, #3 +sqshrun2 v0.8h, v0.4s, #3 +sqsub s20, s10, s7 +sqsub v0.2d, v0.2d, v0.2d +sqsub v0.4s, v0.4s, v0.4s +sqsub v0.8b, v0.8b, v0.8b +sqxtn b18, h18 +sqxtn h20, s17 +sqxtn s19, d14 +sqxtn v0.2s, v0.2d +sqxtn v0.4h, v0.4s +sqxtn v0.8b, v0.8h +sqxtn2 v0.16b, v0.8h +sqxtn2 v0.4s, v0.2d +sqxtn2 v0.8h, v0.4s +sqxtun b19, h14 +sqxtun h21, s15 +sqxtun s20, d12 +sqxtun v0.2s, v0.2d +sqxtun v0.4h, v0.4s +sqxtun v0.8b, v0.8h +sqxtun2 v0.16b, v0.8h +sqxtun2 v0.4s, v0.2d +sqxtun2 v0.8h, v0.4s +srhadd v0.2s, v0.2s, v0.2s +srhadd v0.4h, v0.4h, v0.4h +srhadd v0.8b, v0.8b, v0.8b +sri d10, d12, #14 +sri v0.16b, v0.16b, #3 +sri v0.2d, v0.2d, #3 +sri v0.2s, v0.2s, #3 +sri v0.4h, v0.4h, #3 +sri v0.4s, v0.4s, #3 +sri v0.8b, v0.8b, #3 +sri v0.8h, v0.8h, #3 +srshl d16, d16, d16 +srshl v0.2s, v0.2s, v0.2s +srshl v0.4h, v0.4h, v0.4h +srshl v0.8b, v0.8b, v0.8b +srshr d19, d18, #7 +srshr v0.16b, v0.16b, #3 +srshr v0.2d, v0.2d, #3 +srshr v0.2s, v0.2s, #3 +srshr v0.4h, v0.4h, #3 +srshr v0.4s, v0.4s, #3 +srshr v0.8b, v0.8b, #3 +srshr v0.8h, v0.8h, #3 +srsra d15, d11, #19 +srsra v0.16b, v0.16b, #3 +srsra v0.2d, v0.2d, #3 +srsra v0.2s, v0.2s, #3 +srsra v0.4h, v0.4h, #3 +srsra v0.4s, v0.4s, #3 +srsra v0.8b, v0.8b, #3 +srsra v0.8h, v0.8h, #3 +sshl d31, d31, d31 +sshl v0.2d, v0.2d, v0.2d +sshl v0.2s, v0.2s, v0.2s +sshl v0.4h, v0.4h, v0.4h +sshl v0.8b, v0.8b, v0.8b +sshll v9.8h, v2.8b, #0 +sshll v12.4s, v3.4h, #4 +sshll v0.2d, v0.2s, #3 +sshll2 v28.8h, v12.16b, #7 +sshll2 v0.4s, v0.8h, #3 +sshll2 v17.2d, v13.4s, #22 +sshr d15, d16, #12 +sshr v0.16b, v0.16b, #3 +sshr v0.2d, v0.2d, #3 +sshr v0.2s, v0.2s, #3 +sshr v0.4h, v0.4h, #3 +sshr v0.4s, v0.4s, #3 +sshr v0.8b, v0.8b, #3 +sshr v0.8h, v0.8h, #3 +ssra d18, d12, #21 +ssra v0.16b, v0.16b, #3 +ssra v0.2d, v0.2d, #3 +ssra v0.2s, v0.2s, #3 +ssra v0.4h, v0.4h, #3 +ssra v0.4s, v0.4s, #3 +ssra v0.8b, v0.8b, #3 +ssra v0.8h, v0.8h, #3 +ssubl v0.2d, v0.2s, v0.2s +ssubl v0.4s, v0.4h, v0.4h +ssubl v0.8h, v0.8b, v0.8b +ssubl2 v0.2d, v0.4s, v0.4s +ssubl2 v0.4s, v0.8h, v0.8h +ssubl2 v0.8h, v0.16b, v0.16b +ssubw v0.2d, v0.2d, v0.2s +ssubw v0.4s, v0.4s, v0.4h +ssubw v0.8h, v0.8h, v0.8b +ssubw2 v0.2d, v0.2d, v0.4s +ssubw2 v0.4s, v0.4s, v0.8h +ssubw2 v0.8h, v0.8h, v0.16b +st1 { v18.8b }, [x15] +st1 { v8.8b, v9.8b }, [x18] +st1 { v15.8b, v16.8b, v17.8b }, [x0] +st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] +st1 { v0.16b }, [x0] +st1 { v1.16b, v2.16b }, [x4] +st1 { v27.16b, v28.16b, v29.16b }, [x18] +st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +st1 { v19.4h }, [x7] +st1 { v22.4h, v23.4h }, [x22] +st1 { v13.4h, v14.4h, v15.4h }, [x7] +st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +st1 { v27.8h }, [x17] +st1 { v8.8h, v9.8h, v10.8h }, [x16] +st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +st1 { v25.2s }, [x6] +st1 { v13.2s, v14.2s }, [x9] +st1 { v12.2s, v13.2s, v14.2s }, [x3] +st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +st1 { v0.4s, v1.4s }, [sp], #32 +st1 { v22.4s }, [x19] +st1 { v15.4s, v16.4s }, [x12] +st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +st1 { v20.1d }, [x10] +st1 { v21.1d, v22.1d }, [x29] +st1 { v5.1d, v6.1d, v7.1d }, [x3] +st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +st1 { v26.2d, v27.2d }, [x28] +st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +st1 { v13.2d, v14.2d, v15.2d }, [x27] +st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +st1 { v8.2d }, [x15] +st1 { v0.8h }, [x15], x2 +st1 { v0.8h, v1.8h }, [x15] +st1 { v0.4s, v1.4s }, [sp], #32 +st1 { v0.4s, v1.4s, v2.4s }, [sp] +st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +st1 { v1.b }[5], [x1] +st1 { v0.h }[2], [x1] +st1 { v31.s }[1], [x16] +st1 { v0.8h }, [x15], x2 +st1 { v0.8h, v1.8h }, [x15] +st1 { v0.d }[1], [x0] +st1 { v0.d }[1], [x0], #8 +st2 { v0.16b, v1.16b }, [x0], x1 +st2 { v0.8b, v1.8b }, [x0] +st2 { v6.16b, v7.16b }, [x23] +st2 { v10.4h, v11.4h }, [x18] +st2 { v10.8h, v11.8h }, [x18] +st2 { v25.2s, v26.2s }, [x29] +st2 { v26.4s, v27.4s }, [x14] +st2 { v10.2d, v11.2d }, [x1] +st2 { v21.b, v22.b }[15], [x15] +st2 { v28.h, v29.h }[2], [x6] +st2 { v0.s, v1.s }[3], [sp] +st2 { v0.s, v1.s }[3], [sp], #8 +st2 { v17.d, v18.d }[1], [x1] +st3 { v10.8b, v11.8b, v12.8b }, [x18] +st3 { v26.16b, v27.16b, v28.16b }, [x4] +st3 { v0.4h, v1.4h, v2.4h }, [x15] +st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +st3 { v0.8h, v1.8h, v2.8h }, [x0] +st3 { v19.2s, v20.2s, v21.2s }, [x30] +st3 { v24.4s, v25.4s, v26.4s }, [x8] +st3 { v24.2d, v25.2d, v26.2d }, [x25] +st3 { v8.b, v9.b, v10.b }[4], [x18] +st3 { v0.h, v1.h, v2.h }[7], [x15] +st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +st3 { v9.s, v10.s, v11.s }[2], [x20] +st3 { v16.d, v17.d, v18.d }[0], [x13] +st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] +st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] +st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 +sub d15, d5, d16 +sub v0.2d, v0.2d, v0.2d +sub v15.2s, v14.2s, v11.2s +subhn v7.4h, v10.4s, v13.4s +subhn2 v24.4s, v24.2d, v8.2d +suqadd b19, b14 +suqadd d18, d22 +suqadd h20, h15 +suqadd s21, s12 +suqadd v0.16b, v0.16b +suqadd v0.2d, v0.2d +suqadd v0.2s, v0.2s +suqadd v0.4h, v0.4h +suqadd v0.4s, v0.4s +suqadd v0.8b, v0.8b +suqadd v0.8h, v0.8h +tbl v0.16b, { v0.16b }, v0.16b +tbl v0.16b, { v0.16b, v1.16b }, v0.16b +tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +tbl v0.8b, { v0.16b }, v0.8b +tbl v0.8b, { v0.16b, v1.16b }, v0.8b +tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +tbx v0.16b, { v0.16b }, v0.16b +tbx v0.16b, { v0.16b, v1.16b }, v0.16b +tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +tbx v0.8b, { v0.16b }, v0.8b +tbx v0.8b, { v0.16b, v1.16b }, v0.8b +tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +trn1 v0.16b, v0.16b, v0.16b +trn1 v0.2d, v0.2d, v0.2d +trn1 v0.2s, v0.2s, v0.2s +trn1 v0.4h, v0.4h, v0.4h +trn1 v0.4s, v0.4s, v0.4s +trn1 v0.8b, v0.8b, v0.8b +trn1 v0.8h, v0.8h, v0.8h +trn2 v0.16b, v0.16b, v0.16b +trn2 v0.2d, v0.2d, v0.2d +trn2 v0.2s, v0.2s, v0.2s +trn2 v0.4h, v0.4h, v0.4h +trn2 v0.4s, v0.4s, v0.4s +trn2 v0.8b, v0.8b, v0.8b +trn2 v0.8h, v0.8h, v0.8h +uaba v0.8b, v0.8b, v0.8b +uaba v13.16b, v14.16b, v19.16b +uabal v0.2d, v0.2s, v0.2s +uabal v0.4s, v0.4h, v0.4h +uabal v0.8h, v0.8b, v0.8b +uabal2 v0.2d, v0.4s, v0.4s +uabal2 v0.4s, v0.8h, v0.8h +uabal2 v0.8h, v0.16b, v0.16b +uabd v0.4h, v0.4h, v0.4h +uabd v23.4s, v4.4s, v30.4s +uabdl v0.2d, v0.2s, v0.2s +uabdl v0.4s, v0.4h, v0.4h +uabdl v0.8h, v0.8b, v0.8b +uabdl2 v0.2d, v0.4s, v0.4s +uabdl2 v0.4s, v0.8h, v0.8h +uabdl2 v0.8h, v0.16b, v0.16b +uadalp v0.1d, v0.2s +uadalp v0.2d, v0.4s +uadalp v0.2s, v0.4h +uadalp v0.4h, v0.8b +uadalp v0.4s, v0.8h +uadalp v0.8h, v0.16b +uaddl v0.2d, v0.2s, v0.2s +uaddl v0.4s, v0.4h, v0.4h +uaddl v0.8h, v0.8b, v0.8b +uaddl2 v0.2d, v0.4s, v0.4s +uaddl2 v0.4s, v0.8h, v0.8h +uaddl2 v0.8h, v0.16b, v0.16b +uaddlp v0.1d, v0.2s +uaddlp v0.2d, v0.4s +uaddlp v0.2s, v0.4h +uaddlp v0.4h, v0.8b +uaddlp v0.4s, v0.8h +uaddlp v0.8h, v0.16b +uaddlv d0, v0.4s +uaddlv s0, v0.4h +uaddlv s0, v0.8h +uaddlv h0, v0.8b +uaddlv h0, v0.16b +uaddw v0.2d, v0.2d, v0.2s +uaddw v0.4s, v0.4s, v0.4h +uaddw v0.8h, v0.8h, v0.8b +uaddw2 v0.2d, v0.2d, v0.4s +uaddw2 v0.4s, v0.4s, v0.8h +uaddw2 v0.8h, v0.8h, v0.16b +ucvtf h17, x12 +ucvtf h22, h16, #11 +ucvtf h7, h21 +ucvtf d21, d14 +ucvtf d21, d14, #64 +ucvtf s8, x0 +ucvtf s22, s13 +ucvtf s22, s13, #32 +ucvtf v0.2d, v0.2d +ucvtf v0.2d, v0.2d, #3 +ucvtf v0.2s, v0.2s +ucvtf v0.2s, v0.2s, #3 +ucvtf v0.4h, v0.4h +ucvtf v0.4s, v0.4s +ucvtf v0.4s, v0.4s, #3 +ucvtf v18.4h, v11.4h, #7 +ucvtf v0.8h, v0.8h +ucvtf v22.8h, v20.8h, #10 +udot v0.2s, v0.8b, v0.4b[2] +udot v0.2s, v0.8b, v0.8b +udot v0.4s, v0.16b, v0.16b +udot v0.4s, v0.16b, v0.4b[2] +uhadd v0.16b, v0.16b, v0.16b +uhadd v0.8h, v0.8h, v0.8h +uhsub v12.4h, v16.4h, v28.4h +uhsub v0.4s, v0.4s, v0.4s +umax v0.16b, v0.16b, v0.16b +umax v0.4s, v0.4s, v0.4s +umax v0.8h, v0.8h, v0.8h +umaxp v0.16b, v0.16b, v0.16b +umaxp v0.4s, v0.4s, v0.4s +umaxp v0.8h, v0.8h, v0.8h +umaxv b0, v0.8b +umaxv b0, v0.16b +umaxv h0, v0.4h +umaxv h0, v0.8h +umaxv s0, v0.4s +umin v0.2s, v0.2s, v0.2s +umin v0.4h, v0.4h, v0.4h +umin v0.8b, v0.8b, v0.8b +umin v0.16b, v26.16b, v2.16b +uminp v0.2s, v0.2s, v0.2s +uminp v28.4s, v16.4s, v15.4s +uminp v0.4h, v0.4h, v0.4h +uminp v0.8b, v0.8b, v0.8b +uminv b0, v0.8b +uminv b0, v0.16b +uminv h0, v0.4h +uminv h0, v0.8h +uminv s0, v0.4s +umlal v0.2d, v0.2s, v0.2s +umlal v28.2d, v31.2s, v0.s[1] +umlal v0.4s, v0.4h, v0.4h +umlal v22.4s, v14.4h, v0.h[6] +umlal v0.8h, v0.8b, v0.8b +umlal2 v10.2d, v4.4s, v3.s[2] +umlal2 v31.4s, v7.8h, v15.h[5] +umlal2 v0.2d, v0.4s, v0.4s +umlal2 v0.4s, v0.8h, v0.8h +umlal2 v0.8h, v0.16b, v0.16b +umlsl v0.2d, v0.2s, v0.2s +umlsl v20.2d, v20.2s, v2.s[0] +umlsl v0.4s, v0.4h, v0.4h +umlsl v21.4s, v12.4h, v7.h[5] +umlsl v0.8h, v0.8b, v0.8b +umlsl2 v0.2d, v0.4s, v0.4s +umlsl2 v30.2d, v23.4s, v1.s[2] +umlsl2 v0.4s, v0.8h, v0.8h +umlsl2 v27.4s, v28.8h, v6.h[4] +umlsl2 v0.8h, v0.16b, v0.16b +umov w6, v22.b[0] +umov w0, v0.b[1] +umov w10, v25.h[0] +umov w0, v0.h[1] +umov w0, v0.s[1] +umov x0, v0.d[1] +umull v0.2d, v0.2s, v0.2s +umull v22.2d, v28.2s, v6.s[1] +umull v0.4s, v0.4h, v0.4h +umull v27.4s, v1.4h, v8.h[6] +umull v0.8h, v0.8b, v0.8b +umull2 v0.2d, v0.4s, v0.4s +umull2 v28.2d, v21.4s, v1.s[0] +umull2 v0.4s, v0.8h, v0.8h +umull2 v18.4s, v26.8h, v10.h[1] +umull2 v0.8h, v0.16b, v0.16b +uqadd h0, h1, h5 +uqadd s0, s24, s30 +uqadd v0.8h, v0.8h, v0.8h +uqadd v14.2d, v22.2d, v20.2d +uqrshl b11, b20, b30 +uqrshl s23, s20, s16 +uqrshl v25.8b, v13.8b, v23.8b +uqrshl v0.16b, v0.16b, v0.16b +uqrshl v0.4s, v0.4s, v0.4s +uqrshl v0.8h, v0.8h, v0.8h +uqrshrn b10, h12, #5 +uqrshrn h12, s10, #14 +uqrshrn s10, d10, #25 +uqrshrn v0.2s, v0.2d, #3 +uqrshrn v0.4h, v0.4s, #3 +uqrshrn v0.8b, v0.8h, #3 +uqrshrn2 v0.16b, v0.8h, #3 +uqrshrn2 v0.4s, v0.2d, #3 +uqrshrn2 v0.8h, v0.4s, #3 +uqshl b11, b20, b30 +uqshl b18, b15, #6 +uqshl d15, d12, #19 +uqshl h11, h18, #7 +uqshl s14, s19, #18 +uqshl s23, s20, s16 +uqshl v0.16b, v0.16b, #3 +uqshl v0.16b, v0.16b, v0.16b +uqshl v0.2d, v0.2d, #3 +uqshl v0.2d, v0.2d, v0.2d +uqshl v0.2s, v0.2s, #3 +uqshl v0.4h, v0.4h, #3 +uqshl v8.4h, v17.4h, v13.4h +uqshl v0.4s, v0.4s, #3 +uqshl v0.4s, v0.4s, v0.4s +uqshl v0.8b, v0.8b, #3 +uqshl v0.8h, v0.8h, #3 +uqshl v0.8h, v0.8h, v0.8h +uqshrn b12, h10, #7 +uqshrn h10, s14, #5 +uqshrn s10, d12, #13 +uqshrn v0.2s, v0.2d, #3 +uqshrn v0.4h, v0.4s, #3 +uqshrn v0.8b, v0.8h, #3 +uqshrn2 v0.16b, v0.8h, #3 +uqshrn2 v0.4s, v0.2d, #3 +uqshrn2 v0.8h, v0.4s, #3 +uqsub s16, s21, s6 +uqsub d16, d16, d16 +uqsub v0.4h, v0.4h, v0.4h +uqsub v19.4s, v0.4s, v5.4s +uqxtn b18, h18 +uqxtn h20, s17 +uqxtn s19, d14 +uqxtn v0.2s, v0.2d +uqxtn v0.4h, v0.4s +uqxtn v0.8b, v0.8h +uqxtn2 v0.16b, v0.8h +uqxtn2 v0.4s, v0.2d +uqxtn2 v0.8h, v0.4s +urecpe v0.2s, v0.2s +urecpe v0.4s, v0.4s +urhadd v0.16b, v0.16b, v0.16b +urhadd v0.4s, v0.4s, v0.4s +urhadd v0.8h, v0.8h, v0.8h +urhadd v16.2s, v19.2s, v2.2s +urshl d8, d7, d4 +urshl v31.8b, v5.8b, v3.8b +urshl v0.16b, v0.16b, v0.16b +urshl v0.2d, v0.2d, v0.2d +urshl v0.4s, v0.4s, v0.4s +urshl v0.8h, v0.8h, v0.8h +urshr d20, d23, #31 +urshr v0.16b, v0.16b, #3 +urshr v0.2d, v0.2d, #3 +urshr v0.2s, v0.2s, #3 +urshr v0.4h, v0.4h, #3 +urshr v0.4s, v0.4s, #3 +urshr v0.8b, v0.8b, #3 +urshr v0.8h, v0.8h, #3 +ursqrte v0.2s, v0.2s +ursqrte v0.4s, v0.4s +ursra d18, d10, #13 +ursra v0.16b, v0.16b, #3 +ursra v0.2d, v0.2d, #3 +ursra v0.2s, v0.2s, #3 +ursra v0.4h, v0.4h, #3 +ursra v0.4s, v0.4s, #3 +ursra v0.8b, v0.8b, #3 +ursra v0.8h, v0.8h, #3 +ushl d0, d0, d0 +ushl v6.8b, v26.8b, v6.8b +ushl v0.16b, v0.16b, v0.16b +ushl v0.4s, v0.4s, v0.4s +ushl v0.8h, v0.8h, v0.8h +ushll v0.4s, v0.4h, #3 +ushll v18.8h, v24.8b, #4 +ushll v16.2d, v16.2s, #31 +ushll2 v31.2d, v12.4s, #11 +ushll2 v18.4s, v22.8h, #13 +ushll2 v0.8h, v0.16b, #3 +ushr d10, d17, #18 +ushr v0.16b, v0.16b, #3 +ushr v0.2d, v0.2d, #3 +ushr v0.2s, v0.2s, #3 +ushr v0.4h, v0.4h, #3 +ushr v0.4s, v0.4s, #3 +ushr v0.8b, v0.8b, #3 +ushr v0.8h, v0.8h, #3 +smov w15, v22.b[0] +smov w26, v27.h[0] +smov x21, v0.b[0] +smov x9, v27.h[0] +smov x15, v3.s[0] +smov w0, v0.b[1] +smov w0, v0.h[1] +smov x0, v0.b[1] +smov x0, v0.h[1] +smov x0, v0.s[1] +usqadd b19, b14 +usqadd d18, d22 +usqadd h20, h15 +usqadd s21, s12 +usqadd v0.16b, v0.16b +usqadd v0.2d, v0.2d +usqadd v0.2s, v0.2s +usqadd v0.4h, v0.4h +usqadd v0.4s, v0.4s +usqadd v0.8b, v0.8b +usqadd v0.8h, v0.8h +usra d20, d13, #61 +usra v0.16b, v0.16b, #3 +usra v0.2d, v0.2d, #3 +usra v0.2s, v0.2s, #3 +usra v0.4h, v0.4h, #3 +usra v0.4s, v0.4s, #3 +usra v0.8b, v0.8b, #3 +usra v0.8h, v0.8h, #3 +usubl v0.2d, v0.2s, v0.2s +usubl v0.4s, v0.4h, v0.4h +usubl v0.8h, v0.8b, v0.8b +usubl2 v0.2d, v0.4s, v0.4s +usubl2 v0.4s, v0.8h, v0.8h +usubl2 v0.8h, v0.16b, v0.16b +usubw v0.2d, v0.2d, v0.2s +usubw v0.4s, v0.4s, v0.4h +usubw v0.8h, v0.8h, v0.8b +usubw2 v0.2d, v0.2d, v0.4s +usubw2 v0.4s, v0.4s, v0.8h +usubw2 v0.8h, v0.8h, v0.16b +uzp1 v0.16b, v0.16b, v0.16b +uzp1 v0.2d, v0.2d, v0.2d +uzp1 v0.2s, v0.2s, v0.2s +uzp1 v0.4h, v0.4h, v0.4h +uzp1 v0.4s, v0.4s, v0.4s +uzp1 v0.8b, v0.8b, v0.8b +uzp1 v0.8h, v0.8h, v0.8h +uzp2 v0.16b, v0.16b, v0.16b +uzp2 v0.2d, v0.2d, v0.2d +uzp2 v0.2s, v0.2s, v0.2s +uzp2 v0.4h, v0.4h, v0.4h +uzp2 v0.4s, v0.4s, v0.4s +uzp2 v0.8b, v0.8b, v0.8b +uzp2 v0.8h, v0.8h, v0.8h +xtn v0.2s, v0.2d +xtn v0.4h, v0.4s +xtn v0.8b, v0.8h +xtn2 v0.16b, v0.8h +xtn2 v0.4s, v0.2d +xtn2 v0.8h, v0.4s +zip1 v0.16b, v0.16b, v0.16b +zip1 v0.2d, v0.2d, v0.2d +zip1 v0.2s, v0.2s, v0.2s +zip1 v0.4h, v0.4h, v0.4h +zip1 v0.4s, v0.4s, v0.4s +zip1 v0.8b, v0.8b, v0.8b +zip1 v0.8h, v0.8h, v0.8h +zip2 v0.16b, v0.16b, v0.16b +zip2 v0.2d, v0.2d, v0.2d +zip2 v0.2s, v0.2s, v0.2s +zip2 v0.4h, v0.4h, v0.4h +zip2 v0.4s, v0.4s, v0.4s +zip2 v0.8b, v0.8b, v0.8b +zip2 v0.8h, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-neon-instructions.s index 8913c46ea63aa..270990154f245 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N1-neon-instructions.s @@ -1,1073 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n1 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -and v0.8b, v0.8b, v0.8b -bic v0.4h, #15, lsl #8 -bic v0.8b, v0.8b, v0.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd v0.4s, v0.4s, v0.4s -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt v0.2d, v0.2d, v0.2d -fadd v0.4s, v0.4s, v0.4s -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v0.4s, v0.4s, v0.4s -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fdiv v0.2s, v0.2s, v0.2s -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fmla d0, d1, v0.d[1] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmls d0, d4, v0.d[1] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecpx d16, d19 -frecpx s18, s10 -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrte v0.8h, v0.8h -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.4s, v1.4s }, [sp], #32 -ld1 { v0.4s, v1.4s, v2.4s }, [sp] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.8h }, [x15], x2 -ld1 { v0.8h, v1.8h }, [x15] -ld1 { v0.b }[9], [x0] -ld1 { v0.b }[9], [x0], #1 -ld1r { v0.16b }, [x0] -ld1r { v0.16b }, [x0], #1 -ld1r { v0.8h }, [x15] -ld1r { v0.8h }, [x15], #2 -ld2 { v0.16b, v1.16b }, [x0], x1 -ld2 { v0.8b, v1.8b }, [x0] -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], #4 -ld2r { v0.2d, v1.2d }, [x0] -ld2r { v0.2d, v1.2d }, [x0], #16 -ld2r { v0.4s, v1.4s }, [sp] -ld2r { v0.4s, v1.4s }, [sp], #8 -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3r { v0.4h, v1.4h, v2.4h }, [x15] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v0.8b, v1.8b, v2.8b }, [x0] -ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 -mla v0.8b, v0.8b, v0.8b -mls v0.4h, v0.4h, v0.4h -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orr v0.16b, v0.16b, v0.16b -orr v0.8h, #31 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v0.8h, v0.8h -shadd v0.8b, v0.8b, v0.8b -shl d7, d10, #12 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.4s, v0.4s, #3 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v0.8b, v0.8b, v0.8b -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -smlal v0.2d, v0.2s, v0.2s -smlal v0.4s, v0.4h, v0.4h -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v0.4s, v0.4h, v0.4h -smlsl v0.8h, v0.8b, v0.8b -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v0.4s, v0.4h, v0.4h -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v0.4s, v0.8h, v0.8h -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v0.2d, v0.2s, #3 -sshll2 v0.4s, v0.8h, #3 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v0.16b }, [x0] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v0.8h, v0.8h -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -uminp v0.2s, v0.2s, v0.2s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -umlal v0.2d, v0.2s, v0.2s -umlal v0.4s, v0.4h, v0.4h -umlal v0.8h, v0.8b, v0.8b -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v0.4s, v0.4h, v0.4h -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v0.8h, v0.16b, v0.16b -umull v0.2d, v0.2s, v0.2s -umull v0.4s, v0.4h, v0.4h -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v0.4s, v0.8h, v0.8h -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd v0.8h, v0.8h, v0.8h -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urshl d8, d7, d4 -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -ushl d0, d0, d0 -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n1 -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1094,14 +26,31 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: 1 2 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 addp d1, v14.2d +# CHECK-NEXT: 1 3 1.00 addv s0, v0.4s +# CHECK-NEXT: 1 3 1.00 addv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 addv h0, v0.8h +# CHECK-NEXT: 2 5 1.00 addv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 addv b0, v0.16b +# CHECK-NEXT: 1 2 1.00 aesd v0.16b, v0.16b +# CHECK-NEXT: 1 2 1.00 aese v0.16b, v0.16b +# CHECK-NEXT: 1 2 1.00 aesimc v0.16b, v0.16b +# CHECK-NEXT: 1 2 1.00 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: 1 2 0.50 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: 1 2 0.50 bic v24.2s, #70 +# CHECK-NEXT: 1 2 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: 1 2 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: 1 2 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: 1 2 0.50 cls v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cls v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 cls v0.4h, v0.4h @@ -1114,28 +63,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 clz v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 clz v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: 1 2 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: 1 2 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: 1 2 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: 1 2 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: 1 2 0.50 cmhi d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 cmhs d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: 1 2 0.50 cmle d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: 1 2 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: 1 2 0.50 cmlt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: 1 2 0.50 cmtst d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: 1 2 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 dup v0.16b, w28 @@ -1145,12 +103,26 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 dup v0.4s, w28 # CHECK-NEXT: 1 3 1.00 dup v0.8b, w28 # CHECK-NEXT: 1 3 1.00 dup v0.8h, w28 +# CHECK-NEXT: 1 2 0.50 mov b0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 mov d0, v0.d[1] +# CHECK-NEXT: 1 2 0.50 mov h0, v0.h[1] +# CHECK-NEXT: 1 2 0.50 mov s0, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.16b, v0.b[1] +# CHECK-NEXT: 1 2 0.50 dup v0.2d, v0.d[1] +# CHECK-NEXT: 1 2 0.50 dup v0.2s, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.4h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 dup v0.4s, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.8b, v0.b[1] +# CHECK-NEXT: 1 2 0.50 dup v0.8h, v0.h[1] # CHECK-NEXT: 1 2 0.50 eor v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 ext v0.16b, v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 fabd d29, d24, d20 # CHECK-NEXT: 1 2 0.50 fabd s29, s24, s20 +# CHECK-NEXT: 1 2 0.50 fabd h27, h20, h17 +# CHECK-NEXT: 1 2 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: 1 2 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fabs h25, h7 # CHECK-NEXT: 1 2 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fabs v0.4h, v0.4h @@ -1158,39 +130,70 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 facge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facge s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facge h24, h26, h29 +# CHECK-NEXT: 1 2 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: 1 2 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: 1 2 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 facgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facgt s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facgt h0, h4, h10 # CHECK-NEXT: 1 2 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: 1 2 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: 1 2 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 faddp h10, v19.2h +# CHECK-NEXT: 1 2 0.50 faddp d11, v28.2d # CHECK-NEXT: 1 2 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 faddp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: 1 2 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: 1 2 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: 1 2 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h1, h16, h12 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: 1 2 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: 1 2 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: 1 2 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: 1 2 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: 1 2 0.50 fcvtas d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtas s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtas h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtas v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtas v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtas v0.4h, v0.4h @@ -1198,6 +201,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtas v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtau d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtau s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtau h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtau v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtau v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtau v0.4h, v0.4h @@ -1209,6 +213,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 fcvtl2 v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtms d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtms s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtms h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtms v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtms v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtms v0.4h, v0.4h @@ -1216,6 +221,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtms v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtmu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtmu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtmu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtmu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtmu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtmu v0.4h, v0.4h @@ -1227,6 +233,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 fcvtn2 v0.8h, v0.4s # CHECK-NEXT: 1 2 0.50 fcvtns d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtns s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtns h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtns v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtns v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtns v0.4h, v0.4h @@ -1234,6 +241,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtns v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtnu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtnu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtnu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtnu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtnu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtnu v0.4h, v0.4h @@ -1241,6 +249,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtnu v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtps d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtps s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtps h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtps v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtps v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtps v0.4h, v0.4h @@ -1248,6 +257,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtps v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtpu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtpu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtpu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtpu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtpu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtpu v0.4h, v0.4h @@ -1260,75 +270,132 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtzs d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtzs s12, s13 # CHECK-NEXT: 1 2 0.50 fcvtzs s21, s12, #1 +# CHECK-NEXT: 1 2 0.50 fcvtzs h21, h14 +# CHECK-NEXT: 1 2 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: 1 2 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 2 0.50 fcvtzu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtzu s12, s13 # CHECK-NEXT: 1 2 0.50 fcvtzu s21, s12, #1 +# CHECK-NEXT: 1 2 0.50 fcvtzu h12, h13 +# CHECK-NEXT: 1 2 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fcvtzu v27.8h, v6.8h, #11 +# CHECK-NEXT: 1 15 7.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 10 7.00 fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 7 7.00 fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 10 7.00 fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 13 10.00 fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmax v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: 1 2 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 5 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: 3 8 1.50 fmaxnmv h12, v11.8h +# CHECK-NEXT: 1 5 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: 1 2 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: 1 2 0.50 fmaxp s6, v2.2s +# CHECK-NEXT: 1 5 0.50 fmaxv h0, v0.4h +# CHECK-NEXT: 3 8 1.50 fmaxv h0, v0.8h +# CHECK-NEXT: 1 5 0.50 fmaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmin v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: 1 2 0.50 fminnmp d15, v8.2d # CHECK-NEXT: 1 2 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 5 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: 3 8 1.50 fminnmv h23, v17.8h +# CHECK-NEXT: 1 5 0.50 fminnmv s29, v17.4s # CHECK-NEXT: 1 2 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fminp h7, v10.2h +# CHECK-NEXT: 1 2 0.50 fminp s17, v7.2s +# CHECK-NEXT: 1 5 0.50 fminv h3, v30.4h +# CHECK-NEXT: 3 8 1.50 fminv h29, v12.8h +# CHECK-NEXT: 1 5 0.50 fminv s16, v19.4s # CHECK-NEXT: 1 4 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: 1 4 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmla v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: 1 4 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: 1 4 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: 1 4 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: 1 4 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: 1 4 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmls v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: 1 4 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: 1 4 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: 1 2 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: 1 3 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: 1 3 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: 1 3 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: 1 3 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: 1 3 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: 1 3 0.50 fmul h28, h14, h3 # CHECK-NEXT: 1 3 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: 1 3 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: 1 2 0.50 fmulx d23, d11, d1 # CHECK-NEXT: 1 2 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: 1 2 0.50 fmulx h20, h25, h0 # CHECK-NEXT: 1 3 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: 1 3 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: 1 3 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: 1 2 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: 2 4 2.00 frecpe h20, h8 # CHECK-NEXT: 1 3 1.00 frecpe d13, d13 # CHECK-NEXT: 1 3 1.00 frecpe s19, s14 # CHECK-NEXT: 1 2 0.50 frecpe v0.2d, v0.2d @@ -1336,9 +403,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frecpe v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frecpe v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 frecps h29, h19, h8 +# CHECK-NEXT: 2 4 2.00 frecpx h18, h11 +# CHECK-NEXT: 1 4 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: 1 4 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 frecps d22, d30, d21 # CHECK-NEXT: 1 4 0.50 frecps s21, s16, s13 +# CHECK-NEXT: 1 4 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: 1 3 1.00 frecpx d16, d19 # CHECK-NEXT: 1 3 1.00 frecpx s18, s10 # CHECK-NEXT: 1 3 1.00 frinta v0.2d, v0.2d @@ -1376,13 +447,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frintz v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frintz v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 2 4 2.00 frsqrte h23, h26 # CHECK-NEXT: 1 3 1.00 frsqrte d21, d12 # CHECK-NEXT: 1 3 1.00 frsqrte s22, s13 # CHECK-NEXT: 1 2 0.50 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 frsqrte v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 frsqrte v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: 4 6 4.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: 1 4 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: 1 4 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -1391,52 +466,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 7 7.00 fsqrt v0.4h, v0.4h # CHECK-NEXT: 1 10 7.00 fsqrt v0.4s, v0.4s # CHECK-NEXT: 1 13 10.00 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: 1 2 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 5 0.50 * ld1 { v0.16b }, [x0] +# CHECK-NEXT: 2 5 1.00 * ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: 3 6 1.50 * ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: 4 6 2.00 * ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: 1 5 0.50 * ld1 { v24.8h }, [x27] +# CHECK-NEXT: 2 5 1.00 * ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: 3 5 1.00 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 3 6 1.50 * ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: 4 6 2.00 * ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: 1 5 0.50 * ld1 { v3.4s }, [x4] +# CHECK-NEXT: 2 5 1.00 * ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: 3 6 1.50 * ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: 4 6 2.00 * ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: 4 6 1.50 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 5 0.50 * ld1 { v3.2d }, [x28] +# CHECK-NEXT: 2 5 1.00 * ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: 3 6 1.50 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: 4 6 1.50 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 6 2.00 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 5 0.50 * ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: 2 5 1.00 * ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: 3 6 1.50 * ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: 4 6 2.00 * ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: 2 5 1.00 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 3 6 1.50 * ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: 4 6 2.00 * ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: 2 5 1.00 * ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: 4 6 2.00 * ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: 3 6 1.50 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 5 1.00 * ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: 3 6 1.50 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: 4 6 2.00 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: 3 5 1.00 * ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 3 6 1.50 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 6 2.00 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 7 0.50 * ld1 { v0.b }[7], [x0] +# CHECK-NEXT: 3 7 0.50 * ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: 2 7 0.50 * ld1 { v18.h }[3], [x1] +# CHECK-NEXT: 2 7 0.50 * ld1 { v0.s }[1], [x15] +# CHECK-NEXT: 3 7 0.50 * ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: 2 7 0.50 * ld1 { v11.d }[0], [x13] # CHECK-NEXT: 2 5 0.50 * ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 5 1.00 * ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 7 0.50 * ld1 { v0.b }[9], [x0] # CHECK-NEXT: 3 7 0.50 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 2 7 0.50 * ld1r { v0.16b }, [x0] +# CHECK-NEXT: 3 7 0.50 * ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: 2 7 0.50 * ld1r { v0.4s }, [x15] +# CHECK-NEXT: 2 7 0.50 * ld1r { v3.1d }, [x15] +# CHECK-NEXT: 3 7 0.50 * ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: 2 7 0.50 * ld1r { v18.2d }, [x0] +# CHECK-NEXT: 2 7 0.50 * ld1r { v8.8b }, [x23] +# CHECK-NEXT: 2 7 0.50 * ld1r { v28.4h }, [x9] +# CHECK-NEXT: 2 7 0.50 * ld1r { v3.8h }, [x16] +# CHECK-NEXT: 2 7 0.50 * ld1r { v10.2s }, [x20] +# CHECK-NEXT: 4 7 1.00 * ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: 4 7 1.00 * ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: 4 7 1.00 * ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: 4 7 1.00 * ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: 4 7 1.00 * ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: 4 7 1.00 * ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: 4 7 1.00 * ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: 4 7 1.00 * ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: 4 7 1.00 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 4 7 1.00 * ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: 5 7 1.00 * ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: 3 7 0.50 * ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: 2 7 0.50 * ld1r { v0.8h }, [x15] # CHECK-NEXT: 3 7 0.50 * ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: 5 7 1.00 * ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 4 7 1.00 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 4 7 1.00 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 5 7 1.00 * ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: 5 7 1.00 * ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: 4 7 1.00 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 4 7 1.00 * ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: 5 7 1.00 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 4 7 1.00 * ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: 4 7 1.00 * ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: 4 7 1.00 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 4 7 1.00 * ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: 5 7 1.00 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 4 7 1.00 * ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: 4 7 1.00 * ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: 6 8 1.50 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: 4 7 1.00 * ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: 5 7 1.00 * ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: 4 7 1.00 * ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: 5 7 1.00 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 6 8 1.50 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 7 8 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 6 8 1.50 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: 6 8 1.50 * ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: 5 7 1.50 * ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: 5 7 1.50 * ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: 6 8 1.50 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: 7 8 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 5 7 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 6 7 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 5 7 1.50 * ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: 5 7 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 5 7 1.50 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: 5 7 1.50 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 6 7 1.50 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 5 7 1.50 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: 5 7 1.50 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: 5 7 1.50 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 5 7 1.50 * ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: 6 7 1.50 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 5 7 1.50 * ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: 5 7 1.50 * ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: 7 8 2.00 * ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: 8 10 2.00 * ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: 7 8 2.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: 8 10 2.00 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: 8 10 2.00 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: 5 7 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: 6 7 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 7 8 2.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 9 10 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 8 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 8 10 2.00 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: 8 8 2.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: 8 8 2.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: 9 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 9 8 2.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 8 8 2.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: 8 8 2.00 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: 8 8 2.00 * ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: 8 8 2.00 * ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: 8 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: 9 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 8 8 2.00 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: 9 8 2.00 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 9 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: 8 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 9 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 2 0.50 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: 1 2 0.50 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: 1 2 0.50 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: 2 5 2.00 mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: 1 2 0.50 mov b0, v0.b[15] # CHECK-NEXT: 1 2 0.50 mov d6, v0.d[1] # CHECK-NEXT: 1 2 0.50 mov h2, v0.h[5] # CHECK-NEXT: 1 2 0.50 mov s17, v0.s[2] +# CHECK-NEXT: 1 2 0.50 mov w8, v8.s[0] +# CHECK-NEXT: 1 2 0.50 mov x30, v18.d[0] # CHECK-NEXT: 1 2 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: 1 2 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: 1 2 0.50 mov v2.s[2], v0.s[2] @@ -1449,11 +635,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mov v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: 1 2 0.50 movi v0.16b, #31 +# CHECK-NEXT: 1 2 0.50 movi v14.8h, #174 +# CHECK-NEXT: 1 2 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: 1 2 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: 1 2 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: 1 2 0.50 movi v19.2s, #226 +# CHECK-NEXT: 1 2 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: 1 2 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: 1 2 0.50 movi v0.8b, #255 # CHECK-NEXT: 1 2 0.50 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: 1 2 0.50 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: 1 2 0.50 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: 1 2 0.50 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: 2 5 2.00 mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: 2 5 2.00 mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: 1 2 0.50 mvni v9.4h, #237 +# CHECK-NEXT: 1 2 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: 1 2 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: 1 2 0.50 mvni v0.2s, #0 # CHECK-NEXT: 1 2 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: 1 2 0.50 neg d29, d24 @@ -1467,8 +666,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: 1 2 0.50 mov v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orr v9.4h, #18 # CHECK-NEXT: 1 2 0.50 orr v0.8h, #31 +# CHECK-NEXT: 1 2 0.50 orr v4.4s, #0 # CHECK-NEXT: 2 4 2.00 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 3 1.00 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 pmull v0.8h, v0.8b, v0.8b @@ -1513,6 +715,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -1537,12 +740,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 saddlp v0.4h, v0.8b # CHECK-NEXT: 1 2 0.50 saddlp v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddlp v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 saddlv d0, v0.4s +# CHECK-NEXT: 1 3 1.00 saddlv s0, v0.4h +# CHECK-NEXT: 2 5 1.00 saddlv s0, v0.8h +# CHECK-NEXT: 2 5 1.00 saddlv h0, v0.8b +# CHECK-NEXT: 2 6 2.00 saddlv h0, v0.16b # CHECK-NEXT: 1 2 0.50 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.50 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.50 saddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: 1 2 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 2 0.50 scvtf h4, h8, #9 +# CHECK-NEXT: 1 2 0.50 scvtf h5, h14 # CHECK-NEXT: 1 2 0.50 scvtf d21, d12 # CHECK-NEXT: 1 2 0.50 scvtf d21, d12, #64 # CHECK-NEXT: 1 2 0.50 scvtf s22, s13 @@ -1554,22 +764,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 scvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 scvtf v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: 4 6 4.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 scvtf v4.8h, v8.8h, #10 +# CHECK-NEXT: 1 2 0.50 sdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 2 0.50 sdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 sdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: 1 2 0.50 shl d7, d10, #12 +# CHECK-NEXT: 1 2 1.00 shl v23.8b, v18.8b, #6 # CHECK-NEXT: 1 2 1.00 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 1.00 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 2 1.00 shl v0.8h, v23.8h, #10 # CHECK-NEXT: 1 2 1.00 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: 1 2 1.00 shll v0.2d, v0.2s, #32 # CHECK-NEXT: 1 2 1.00 shll v0.4s, v0.4h, #16 # CHECK-NEXT: 1 2 1.00 shll v0.8h, v0.8b, #8 # CHECK-NEXT: 1 2 1.00 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: 1 2 1.00 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: 1 2 1.00 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: 1 2 1.00 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: 1 2 1.00 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: 1 2 1.00 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: 1 2 1.00 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: 1 2 1.00 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: 1 2 1.00 shll2 v0.8h, v0.16b, #8 @@ -1581,6 +794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: 1 2 0.50 sli d10, d14, #12 # CHECK-NEXT: 1 2 1.00 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 sli v0.2d, v0.2d, #3 @@ -1592,32 +806,56 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: 1 2 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: 1 2 0.50 smaxp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 2 5 1.00 smaxv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 smaxv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 smaxv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 smaxv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 smaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 smin v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 smin v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 2 5 1.00 sminv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 sminv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 sminv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 sminv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 sminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: 1 4 1.00 smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: 1 4 1.00 smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: 1 4 1.00 smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 4 1.00 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: 1 4 1.00 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: 1 4 1.00 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: 1 4 1.00 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqabs b19, b14 # CHECK-NEXT: 1 2 0.50 sqabs d18, d12 @@ -1631,6 +869,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: 1 2 0.50 sqadd h12, h18, h10 # CHECK-NEXT: 1 2 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sqdmlal d19, s24, s12 @@ -1638,17 +877,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: 1 2 0.50 sqdmlal s17, h27, h12 # CHECK-NEXT: 1 4 1.00 sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: 1 4 1.00 sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: 1 2 0.50 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: 1 2 0.50 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: 1 4 1.00 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: 1 4 1.00 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: 1 4 1.00 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: 1 4 1.00 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: 1 2 0.50 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: 1 2 0.50 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: 1 2 0.50 sqdmlsl d12, s23, s13 # CHECK-NEXT: 1 4 1.00 sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: 1 4 1.00 sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: 1 2 0.50 sqdmlsl s14, h12, h25 # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: 1 4 1.00 sqdmulh h10, h11, h12 # CHECK-NEXT: 1 2 0.50 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 2 0.50 sqdmulh s15, s14, v0.s[1] @@ -1674,6 +930,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 sqneg v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqneg v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: 1 2 0.50 sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: 1 2 0.50 sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: 1 2 0.50 sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: 1 2 0.50 sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: 1 2 0.50 sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah h0, h1, h2 +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: 2 5 2.00 sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlah s0, s1, s2 +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 2 5 2.00 sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 2 0.50 sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: 1 2 0.50 sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: 1 2 0.50 sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: 1 2 0.50 sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: 1 2 0.50 sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: 1 2 0.50 sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh h0, h1, h2 +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: 2 5 2.00 sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlsh s0, s1, s2 +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 2 5 2.00 sqrdmlsh v0.4s, v1.4s, v2.4s # CHECK-NEXT: 1 4 1.00 sqrdmulh h10, h11, h12 # CHECK-NEXT: 1 2 0.50 sqrdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 2 0.50 sqrdmulh s15, s14, v0.s[1] @@ -1685,6 +965,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 1.00 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 sqshl s17, s4, s23 +# CHECK-NEXT: 1 2 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: 1 2 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: 1 2 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: 1 2 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: 1 2 0.50 sqrshrn s15, d12, #9 @@ -1710,6 +993,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqshl h3, h4, h15 # CHECK-NEXT: 1 4 1.00 sqshl s14, s17, #22 # CHECK-NEXT: 1 4 1.00 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: 1 4 1.00 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: 1 4 1.00 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 1.00 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 1.00 sqshl v0.2s, v0.2s, v0.2s @@ -1806,8 +1090,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 1.00 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 1.00 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 1.00 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: 1 2 1.00 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: 1 2 1.00 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: 1 2 1.00 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: 1 2 1.00 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: 1 2 1.00 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: 1 2 0.50 sshr d15, d16, #12 # CHECK-NEXT: 1 2 1.00 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 sshr v0.2d, v0.2d, #3 @@ -1836,30 +1124,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 2 0.50 * st1 { v18.8b }, [x15] +# CHECK-NEXT: 3 2 1.00 * st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: 5 3 1.50 * st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: 6 4 1.50 * st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: 8 5 2.00 * st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: 2 2 0.50 * st1 { v19.4h }, [x7] +# CHECK-NEXT: 3 2 1.00 * st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: 5 3 1.50 * st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: 4 2 1.00 * st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: 2 2 0.50 * st1 { v27.8h }, [x17] +# CHECK-NEXT: 6 4 1.50 * st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: 8 5 2.00 * st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v25.2s }, [x6] +# CHECK-NEXT: 3 2 1.00 * st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: 5 3 1.50 * st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4s }, [x19] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: 8 5 2.00 * st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: 2 2 0.50 * st1 { v20.1d }, [x10] +# CHECK-NEXT: 3 2 1.00 * st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: 5 3 1.50 * st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: 4 2 1.00 * st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: 7 4 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 6 4 1.50 * st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: 8 5 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 6 4 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 4 0.50 * st1 { v1.b }[5], [x1] +# CHECK-NEXT: 2 4 0.50 * st1 { v0.h }[2], [x1] +# CHECK-NEXT: 2 4 0.50 * st1 { v31.s }[1], [x16] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 4 0.50 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 3 4 0.50 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 5 5 1.00 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 2 4 0.50 * st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 4 5 1.00 * st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: 2 4 0.50 * st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: 4 5 1.00 * st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: 2 4 0.50 * st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: 4 5 1.00 * st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: 4 5 1.00 * st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: 2 4 0.50 * st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: 2 4 0.50 * st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: 2 4 0.50 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 3 4 0.50 * st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: 2 4 0.50 * st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: 4 5 1.00 * st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: 6 6 1.50 * st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: 4 5 1.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 7 6 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 6 6 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: 4 5 1.00 * st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: 6 6 1.50 * st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: 6 6 1.50 * st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: 6 4 1.50 * st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: 6 4 1.50 * st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: 7 4 1.50 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 6 4 1.50 * st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: 6 5 1.50 * st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: 6 7 1.50 * st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: 12 9 3.00 * st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: 6 7 1.50 * st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: 12 9 3.00 * st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: 6 7 1.50 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 13 9 3.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 12 9 3.00 * st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: 8 6 2.00 * st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: 6 5 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 6 5 1.50 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: 6 5 1.50 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: 6 4 1.50 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: 6 5 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] # CHECK-NEXT: 7 5 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +# CHECK-NEXT: 7 4 1.50 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.50 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.50 sub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: 1 2 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: 1 2 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: 1 2 0.50 suqadd b19, b14 # CHECK-NEXT: 1 2 0.50 suqadd d18, d22 # CHECK-NEXT: 1 2 0.50 suqadd h20, h15 @@ -1902,6 +1256,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: 1 4 1.00 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 1.00 uabal v0.8h, v0.8b, v0.8b @@ -1909,6 +1264,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: 1 2 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -1933,14 +1289,23 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 uaddlp v0.4h, v0.8b # CHECK-NEXT: 1 2 0.50 uaddlp v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddlp v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 uaddlv d0, v0.4s +# CHECK-NEXT: 1 3 1.00 uaddlv s0, v0.4h +# CHECK-NEXT: 2 5 1.00 uaddlv s0, v0.8h +# CHECK-NEXT: 2 5 1.00 uaddlv h0, v0.8b +# CHECK-NEXT: 2 6 2.00 uaddlv h0, v0.16b # CHECK-NEXT: 1 2 0.50 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.50 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.50 uaddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: 1 2 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 6 1.00 ucvtf h17, x12 +# CHECK-NEXT: 1 2 0.50 ucvtf h22, h16, #11 +# CHECK-NEXT: 1 2 0.50 ucvtf h7, h21 # CHECK-NEXT: 1 2 0.50 ucvtf d21, d14 # CHECK-NEXT: 1 2 0.50 ucvtf d21, d14, #64 +# CHECK-NEXT: 2 6 1.00 ucvtf s8, x0 # CHECK-NEXT: 1 2 0.50 ucvtf s22, s13 # CHECK-NEXT: 1 2 0.50 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 1.00 ucvtf v0.2d, v0.2d @@ -1950,9 +1315,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: 4 6 4.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 ucvtf v22.8h, v20.8h, #10 +# CHECK-NEXT: 1 2 0.50 udot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 2 0.50 udot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 udot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: 1 2 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umax v0.4s, v0.4s, v0.4s @@ -1960,37 +1332,69 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 2 5 1.00 umaxv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 umaxv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 umaxv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 umaxv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 umaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: 1 2 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: 1 2 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uminp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 2 5 1.00 uminv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 uminv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 uminv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 uminv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 uminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: 1 4 1.00 umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: 1 4 1.00 umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: 1 4 1.00 umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: 1 4 1.00 umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: 1 4 1.00 umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 umov w6, v22.b[0] +# CHECK-NEXT: 1 2 1.00 umov w0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 umov w10, v25.h[0] +# CHECK-NEXT: 1 2 1.00 umov w0, v0.h[1] +# CHECK-NEXT: 1 2 1.00 mov w0, v0.s[1] +# CHECK-NEXT: 1 2 1.00 mov x0, v0.d[1] # CHECK-NEXT: 1 4 1.00 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: 1 4 1.00 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: 1 4 1.00 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: 1 4 1.00 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: 1 4 1.00 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: 1 2 0.50 uqadd s0, s24, s30 # CHECK-NEXT: 1 2 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: 1 4 1.00 uqrshl b11, b20, b30 # CHECK-NEXT: 1 4 1.00 uqrshl s23, s20, s16 +# CHECK-NEXT: 1 4 1.00 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: 1 4 1.00 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 1.00 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: 1 2 0.50 uqrshrn h12, s10, #14 @@ -2013,6 +1417,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 1.00 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 1.00 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 4 1.00 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: 1 4 1.00 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 1.00 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 uqshl v0.8b, v0.8b, #3 @@ -2027,8 +1432,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 uqsub s16, s21, s6 # CHECK-NEXT: 1 2 0.50 uqsub d16, d16, d16 # CHECK-NEXT: 1 2 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: 1 4 1.00 uqxtn b18, h18 # CHECK-NEXT: 1 4 1.00 uqxtn h20, s17 # CHECK-NEXT: 1 4 1.00 uqxtn s19, d14 @@ -2043,7 +1450,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: 1 4 1.00 urshl d8, d7, d4 +# CHECK-NEXT: 1 4 1.00 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: 1 4 1.00 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 1.00 urshl v0.4s, v0.4s, v0.4s @@ -2067,10 +1476,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 1.00 ursra v0.8h, v0.8h, #3 # CHECK-NEXT: 1 2 1.00 ushl d0, d0, d0 +# CHECK-NEXT: 1 2 1.00 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 1.00 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 1.00 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 1.00 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: 1 2 1.00 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: 1 2 1.00 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: 1 2 1.00 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: 1 2 1.00 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: 1 2 1.00 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ushr d10, d17, #18 # CHECK-NEXT: 1 2 1.00 ushr v0.16b, v0.16b, #3 @@ -2080,6 +1494,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 1.00 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 1.00 ushr v0.8h, v0.8h, #3 +# CHECK-NEXT: 1 2 0.50 U smov w15, v22.b[0] +# CHECK-NEXT: 1 2 0.50 U smov w26, v27.h[0] +# CHECK-NEXT: 1 2 0.50 U smov x21, v0.b[0] +# CHECK-NEXT: 1 2 0.50 U smov x9, v27.h[0] +# CHECK-NEXT: 1 2 0.50 U smov x15, v3.s[0] +# CHECK-NEXT: 1 2 1.00 smov w0, v0.b[1] +# CHECK-NEXT: 1 2 1.00 smov w0, v0.h[1] +# CHECK-NEXT: 1 2 1.00 smov x0, v0.b[1] +# CHECK-NEXT: 1 2 1.00 smov x0, v0.h[1] +# CHECK-NEXT: 1 2 1.00 smov x0, v0.s[1] # CHECK-NEXT: 1 2 0.50 usqadd b19, b14 # CHECK-NEXT: 1 2 0.50 usqadd d18, d22 # CHECK-NEXT: 1 2 0.50 usqadd h20, h15 @@ -2160,7 +1584,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1.0] [1.1] [2.0] [2.1] [3] [4.0] [4.1] [5] [6] -# CHECK-NEXT: - - - 73.00 73.00 21.33 10.33 10.33 703.00 611.00 +# CHECK-NEXT: - - - 270.00 270.00 29.33 16.33 16.33 1089.00 956.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1.0] [1.1] [2.0] [2.1] [3] [4.0] [4.1] [5] [6] Instructions: @@ -2180,14 +1604,31 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 addp d1, v14.2d +# CHECK-NEXT: - - - - - - - - - 1.00 addv s0, v0.4s +# CHECK-NEXT: - - - - - - - - - 1.00 addv h0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 addv h0, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 addv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 addv b0, v0.16b +# CHECK-NEXT: - - - - - - - - 1.00 - aesd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 1.00 - aese v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 1.00 - aesimc v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 1.00 - aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - 0.50 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 bic v24.2s, #70 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 cls v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 cls v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 cls v0.4h, v0.4h @@ -2200,28 +1641,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 clz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 clz v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmeq d20, d21, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmge d20, d21, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmgt d20, d21, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmhi d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmhs d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmle d20, d21, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmlt d20, d21, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmtst d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: - - - - - 1.00 - - - - dup v0.16b, w28 @@ -2231,12 +1681,26 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - 1.00 - - - - dup v0.4s, w28 # CHECK-NEXT: - - - - - 1.00 - - - - dup v0.8b, w28 # CHECK-NEXT: - - - - - 1.00 - - - - dup v0.8h, w28 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mov b0, v0.b[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mov d0, v0.d[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mov h0, v0.h[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mov s0, v0.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.16b, v0.b[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.2d, v0.d[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.2s, v0.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.4h, v0.h[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.4s, v0.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.8b, v0.b[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 dup v0.8h, v0.h[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 eor v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 ext v0.16b, v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - 0.50 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabd d29, d24, d20 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabd s29, s24, s20 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fabd h27, h20, h17 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fabs h25, h7 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabs v0.4h, v0.4h @@ -2244,39 +1708,70 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 facge d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 facge s10, s11, s12 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 facge h24, h26, h29 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 facgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 facgt s10, s11, s12 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 facgt h0, h4, h10 # CHECK-NEXT: - - - - - - - - 0.50 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - 0.50 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 faddp h10, v19.2h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 faddp d11, v28.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 faddp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge h1, h16, h12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge s10, s11, s12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtas d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtas s12, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtas h12, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtas v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtas v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtas v0.4h, v0.4h @@ -2284,6 +1779,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 4.00 - fcvtas v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtau d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtau s12, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtau h12, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtau v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtau v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtau v0.4h, v0.4h @@ -2295,6 +1791,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 2.00 - fcvtl2 v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtms d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtms s22, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtms h22, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtms v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtms v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtms v0.4h, v0.4h @@ -2302,6 +1799,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 4.00 - fcvtms v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtmu d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtmu s12, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtmu h12, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtmu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtmu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtmu v0.4h, v0.4h @@ -2313,6 +1811,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 2.00 - fcvtn2 v0.8h, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtns d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtns s22, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtns h22, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtns v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtns v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtns v0.4h, v0.4h @@ -2320,6 +1819,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 4.00 - fcvtns v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtnu d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtnu s12, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtnu h12, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtnu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtnu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtnu v0.4h, v0.4h @@ -2327,6 +1827,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 4.00 - fcvtnu v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtps d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtps s22, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtps h22, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtps v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtps v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtps v0.4h, v0.4h @@ -2334,6 +1835,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 4.00 - fcvtps v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtpu d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtpu s12, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtpu h12, h13 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtpu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - fcvtpu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - fcvtpu v0.4h, v0.4h @@ -2346,75 +1848,132 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs s12, s13 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs s21, s12, #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs h21, h14 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtzs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtzs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - 2.00 - fcvtzs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: - - - - - - - - 2.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - 4.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu s12, s13 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu s21, s12, #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu h12, h13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtzu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - 1.00 - fcvtzu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - 2.00 - fcvtzu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: - - - - - - - - 2.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - 4.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fcvtzu v27.8h, v6.8h, #11 +# CHECK-NEXT: - - - - - - - - 7.00 - fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 7.00 - fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 7.00 - fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 7.00 - fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 10.00 - fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmax v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: - - - - - - - - 1.50 1.50 fmaxnmv h12, v11.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxp s6, v2.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - 1.50 1.50 fmaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmin v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmp d15, v8.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: - - - - - - - - 1.50 1.50 fminnmv h23, v17.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminnmv s29, v17.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminp h7, v10.2h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminp s17, v7.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminv h3, v30.4h +# CHECK-NEXT: - - - - - - - - 1.50 1.50 fminv h29, v12.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fminv s16, v19.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul h28, h14, h3 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx d23, d11, d1 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx h20, h25, h0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 2.00 - frecpe h20, h8 # CHECK-NEXT: - - - - - - - - 1.00 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - 1.00 - frecpe s19, s14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 frecpe v0.2d, v0.2d @@ -2422,9 +1981,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 2.00 - frecpe v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 2.00 - frecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 4.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 frecps h29, h19, h8 +# CHECK-NEXT: - - - - - - - - 2.00 - frecpx h18, h11 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - 0.50 0.50 frecps s21, s16, s13 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: - - - - - - - - 1.00 - frecpx d16, d19 # CHECK-NEXT: - - - - - - - - 1.00 - frecpx s18, s10 # CHECK-NEXT: - - - - - - - - 1.00 - frinta v0.2d, v0.2d @@ -2462,13 +2025,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 2.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 2.00 - frintz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 4.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 2.00 - frsqrte h23, h26 # CHECK-NEXT: - - - - - - - - 1.00 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - 1.00 - frsqrte s22, s13 # CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - 1.00 - frsqrte v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 2.00 - frsqrte v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 2.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: - - - - - - - - 4.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -2477,52 +2044,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 7.00 - fsqrt v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 7.00 - fsqrt v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 10.00 - fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - 0.50 0.50 - - - - - ld1 { v0.16b }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: - - - 0.50 0.50 - - - - - ld1 { v24.8h }, [x27] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 - - ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: - - - 0.50 0.50 - - - - - ld1 { v3.4s }, [x4] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 - - ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: - - - 0.50 0.50 - - - - - ld1 { v3.2d }, [x28] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 - - ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: - - - 2.00 2.00 - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 - - ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - 1.50 1.50 - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1 { v0.b }[7], [x0] +# CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1 { v18.h }[3], [x1] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1 { v0.s }[1], [x15] +# CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1 { v11.d }[0], [x13] # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 - - ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - 1.00 1.00 - - - - - ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1 { v0.b }[9], [x0] # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v0.16b }, [x0] +# CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v0.4s }, [x15] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v3.1d }, [x15] +# CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v18.2d }, [x0] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v8.8b }, [x23] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v28.4h }, [x9] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v3.8h }, [x16] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v10.2s }, [x20] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 ld1r { v0.8h }, [x15] # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.50 1.50 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.50 1.50 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: - - - 1.50 1.50 - - - 2.00 2.00 ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: - - - 1.50 1.50 - - - 2.00 2.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - 1.50 1.50 - - - 2.00 2.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - 2.00 2.00 0.33 0.33 0.33 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - 0.50 0.50 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - 1.00 - mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: - - - - - - - - 2.00 - mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov b0, v0.b[15] # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov d6, v0.d[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov h2, v0.h[5] # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov s17, v0.s[2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mov w8, v8.s[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mov x30, v18.d[0] # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov v2.s[2], v0.s[2] @@ -2535,11 +2213,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v0.16b, #31 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v14.8h, #174 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v19.2s, #226 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: - - - - - - - - 0.50 0.50 movi v0.8b, #255 # CHECK-NEXT: - - - - - - - - 0.50 0.50 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: - - - - - - - - 2.00 - mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: - - - - - - - - 2.00 - mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mvni v9.4h, #237 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: - - - - - - - - 0.50 0.50 mvni v0.2s, #0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: - - - - - - - - 0.50 0.50 neg d29, d24 @@ -2553,8 +2244,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 orr v9.4h, #18 # CHECK-NEXT: - - - - - - - - 0.50 0.50 orr v0.8h, #31 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 orr v4.4s, #0 # CHECK-NEXT: - - - - - - - - 2.00 - pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 1.00 - pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 1.00 - pmull v0.8h, v0.8b, v0.8b @@ -2599,6 +2293,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -2623,12 +2318,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddlp v0.4h, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddlp v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - 1.00 saddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - 1.00 saddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 saddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 saddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 saddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf h4, h8, #9 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf h5, h14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf d21, d12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf d21, d12, #64 # CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf s22, s13 @@ -2640,22 +2342,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 2.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 2.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: - - - - - - - - 4.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 scvtf v4.8h, v8.8h, #10 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - 0.50 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - 1.00 shl v23.8b, v18.8b, #6 # CHECK-NEXT: - - - - - - - - - 1.00 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - 1.00 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - 1.00 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - 1.00 shl v0.8h, v23.8h, #10 # CHECK-NEXT: - - - - - - - - - 1.00 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - 1.00 shll v0.2d, v0.2s, #32 # CHECK-NEXT: - - - - - - - - - 1.00 shll v0.4s, v0.4h, #16 # CHECK-NEXT: - - - - - - - - - 1.00 shll v0.8h, v0.8b, #8 # CHECK-NEXT: - - - - - - - - - 1.00 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: - - - - - - - - - 1.00 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: - - - - - - - - - 1.00 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: - - - - - - - - - 1.00 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: - - - - - - - - - 1.00 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: - - - - - - - - - 1.00 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: - - - - - - - - - 1.00 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: - - - - - - - - - 1.00 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: - - - - - - - - - 1.00 shll2 v0.8h, v0.16b, #8 @@ -2667,6 +2372,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - 0.50 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - 1.00 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - 1.00 sli v0.2d, v0.2d, #3 @@ -2678,32 +2384,56 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 smaxp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 1.50 smaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 smaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - 1.00 smaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 smaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - 1.00 smaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 smin v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 smin v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 sminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 sminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - 1.00 sminv h0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 sminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - 1.00 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - 1.00 - smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - 1.00 - smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: - - - - - - - - 1.00 - smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 1.00 - smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - 1.00 - smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 1.00 - smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 1.00 - smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - 1.00 - smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: - - - - - - - - 1.00 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 1.00 - smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: - - - - - - - - 1.00 - smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: - - - - - - - - 1.00 - smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - 1.00 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 1.00 - smlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 1.00 - smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - 1.00 - smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: - - - - - - - - 1.00 - smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 1.00 - smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: - - - - - - - - 1.00 - smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 1.00 - smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: - - - - - - - - 1.00 - smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqabs b19, b14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqabs d18, d12 @@ -2717,6 +2447,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqadd h12, h18, h10 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmlal d19, s24, s12 @@ -2724,17 +2455,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmlal s17, h27, h12 # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmlsl d12, s23, s13 # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmlsl s14, h12, h25 # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 1.00 - sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: - - - - - - - - 1.00 - sqdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqdmulh s15, s14, v0.s[1] @@ -2760,6 +2508,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqneg v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlah h0, h1, h2 +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - 2.00 - sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlah s0, s1, s2 +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - 2.00 - sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlsh h0, h1, h2 +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - 2.00 - sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlsh s0, s1, s2 +# CHECK-NEXT: - - - - - - - - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - 2.00 - sqrdmlsh v0.4s, v1.4s, v2.4s # CHECK-NEXT: - - - - - - - - 1.00 - sqrdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrdmulh s15, s14, v0.s[1] @@ -2771,6 +2543,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - 1.00 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - 1.00 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - 1.00 sqshl s17, s4, s23 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sqrshrn s15, d12, #9 @@ -2796,6 +2571,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 sqshl h3, h4, h15 # CHECK-NEXT: - - - - - - - - - 1.00 sqshl s14, s17, #22 # CHECK-NEXT: - - - - - - - - - 1.00 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - 1.00 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: - - - - - - - - - 1.00 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - 1.00 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - 1.00 sqshl v0.2s, v0.2s, v0.2s @@ -2892,8 +2668,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - 1.00 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - 1.00 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - 1.00 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: - - - - - - - - - 1.00 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: - - - - - - - - - 1.00 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - 1.00 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: - - - - - - - - - 1.00 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - 1.00 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - 1.00 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - 1.00 sshr v0.2d, v0.2d, #3 @@ -2922,30 +2702,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v18.8b }, [x15] +# CHECK-NEXT: - - - 0.50 0.50 - - - 1.00 1.00 st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v0.16b }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v19.4h }, [x7] +# CHECK-NEXT: - - - 0.50 0.50 - - - 1.00 1.00 st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v27.8h }, [x17] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v25.2s }, [x6] +# CHECK-NEXT: - - - 0.50 0.50 - - - 1.00 1.00 st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v22.4s }, [x19] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v20.1d }, [x10] +# CHECK-NEXT: - - - 0.50 0.50 - - - 1.00 1.00 st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.50 1.50 st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v8.2d }, [x15] +# CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v1.b }[5], [x1] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v0.h }[2], [x1] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v31.s }[1], [x16] # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - 1.00 1.00 0.33 0.33 0.33 1.00 1.00 st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: - - - 0.50 0.50 0.33 0.33 0.33 0.50 0.50 st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: - - - 0.50 0.50 - - - 0.50 0.50 st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: - - - 1.00 1.00 - - - 1.00 1.00 st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: - - - 3.00 3.00 - - - 3.00 3.00 st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: - - - 3.00 3.00 - - - 3.00 3.00 st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - 3.00 3.00 0.33 0.33 0.33 3.00 3.00 st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - 3.00 3.00 - - - 3.00 3.00 st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: - - - 2.00 2.00 - - - 2.00 2.00 st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: - - - 1.50 1.50 - - - 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] # CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +# CHECK-NEXT: - - - 1.50 1.50 0.33 0.33 0.33 1.50 1.50 st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - 0.50 0.50 sub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - 0.50 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: - - - - - - - - 0.50 0.50 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 suqadd h20, h15 @@ -2988,6 +2834,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - 1.00 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: - - - - - - - - - 1.00 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - 1.00 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - 1.00 uabal v0.8h, v0.8b, v0.8b @@ -2995,6 +2842,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -3019,14 +2867,23 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddlp v0.4h, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddlp v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - 1.00 uaddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - 1.00 uaddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 uaddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 uaddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 uaddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - 1.00 - - 1.00 - ucvtf h17, x12 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf h22, h16, #11 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf h7, h21 # CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf d21, d14, #64 +# CHECK-NEXT: - - - - - 1.00 - - 1.00 - ucvtf s8, x0 # CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf s22, s13 # CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - 1.00 - ucvtf v0.2d, v0.2d @@ -3036,9 +2893,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 2.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 2.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: - - - - - - - - 4.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 ucvtf v22.8h, v20.8h, #10 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - 0.50 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 umax v0.4s, v0.4s, v0.4s @@ -3046,37 +2910,69 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 umaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 umaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - 1.00 umaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 umaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - 1.00 umaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - 0.50 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uminp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 0.50 1.50 uminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - 2.00 uminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - 1.00 uminv h0, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 1.50 uminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - 1.00 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - 1.00 - umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: - - - - - - - - 1.00 - umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: - - - - - - - - 1.00 - umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - 1.00 - umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: - - - - - - - - 1.00 - umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: - - - - - - - - 1.00 - umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 1.00 - umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 1.00 - umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 1.00 - umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - 1.00 - umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: - - - - - - - - 1.00 - umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 1.00 - umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: - - - - - - - - 1.00 - umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 1.00 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - 1.00 - umlsl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 umov w6, v22.b[0] +# CHECK-NEXT: - - - - - - - - - 1.00 umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 umov w10, v25.h[0] +# CHECK-NEXT: - - - - - - - - - 1.00 umov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - 1.00 mov w0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - 1.00 mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - 1.00 - umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - 1.00 - umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: - - - - - - - - 1.00 - umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 1.00 - umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: - - - - - - - - 1.00 - umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - 1.00 - umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - 1.00 - umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: - - - - - - - - 1.00 - umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 1.00 - umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: - - - - - - - - 1.00 - umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uqadd s0, s24, s30 # CHECK-NEXT: - - - - - - - - 0.50 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: - - - - - - - - - 1.00 uqrshl b11, b20, b30 # CHECK-NEXT: - - - - - - - - - 1.00 uqrshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - 1.00 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: - - - - - - - - - 1.00 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - 1.00 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - 1.00 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - 1.00 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: - - - - - - - - 0.50 0.50 uqrshrn h12, s10, #14 @@ -3099,6 +2995,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - 1.00 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - 1.00 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - 1.00 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: - - - - - - - - - 1.00 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - 1.00 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - 1.00 uqshl v0.8b, v0.8b, #3 @@ -3113,8 +3010,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - 1.00 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - 1.00 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uqsub s16, s21, s6 # CHECK-NEXT: - - - - - - - - 0.50 0.50 uqsub d16, d16, d16 # CHECK-NEXT: - - - - - - - - 0.50 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: - - - - - - - - - 1.00 uqxtn b18, h18 # CHECK-NEXT: - - - - - - - - - 1.00 uqxtn h20, s17 # CHECK-NEXT: - - - - - - - - - 1.00 uqxtn s19, d14 @@ -3129,7 +3028,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - 0.50 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - 0.50 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - 0.50 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: - - - - - - - - - 1.00 urshl d8, d7, d4 +# CHECK-NEXT: - - - - - - - - - 1.00 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: - - - - - - - - - 1.00 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - 1.00 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - 1.00 urshl v0.4s, v0.4s, v0.4s @@ -3153,10 +3054,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - 1.00 ursra v0.8h, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - 1.00 ushl d0, d0, d0 +# CHECK-NEXT: - - - - - - - - - 1.00 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - 1.00 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - 1.00 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - 1.00 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - 1.00 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: - - - - - - - - - 1.00 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: - - - - - - - - - 1.00 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: - - - - - - - - - 1.00 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: - - - - - - - - - 1.00 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: - - - - - - - - 0.50 0.50 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - 1.00 ushr v0.16b, v0.16b, #3 @@ -3166,6 +3072,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - 1.00 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - 1.00 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - 1.00 ushr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smov w15, v22.b[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smov w26, v27.h[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smov x21, v0.b[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smov x9, v27.h[0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 smov x15, v3.s[0] +# CHECK-NEXT: - - - - - - - - - 1.00 smov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - 1.00 smov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - 1.00 smov x0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - 1.00 smov x0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - 1.00 smov x0, v0.s[1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 usqadd b19, b14 # CHECK-NEXT: - - - - - - - - 0.50 0.50 usqadd d18, d22 # CHECK-NEXT: - - - - - - - - 0.50 0.50 usqadd h20, h15 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-bf16-instructions.s new file mode 100644 index 0000000000000..8af3a802aa7c1 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-bf16-instructions.s @@ -0,0 +1,56 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -instruction-tables < %p/Inputs/bf16-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 1.00 bfcvt h0, s0 +# CHECK-NEXT: 1 4 1.00 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 1 4 1.00 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 2 0.50 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: 1 4 0.50 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 5 0.50 bfmmla v0.4s, v0.8h, v0.8h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N2UnitB +# CHECK-NEXT: [0.1] - N2UnitB +# CHECK-NEXT: [1.0] - N2UnitD +# CHECK-NEXT: [1.1] - N2UnitD +# CHECK-NEXT: [2] - N2UnitL2 +# CHECK-NEXT: [3.0] - N2UnitL01 +# CHECK-NEXT: [3.1] - N2UnitL01 +# CHECK-NEXT: [4] - N2UnitM0 +# CHECK-NEXT: [5] - N2UnitM1 +# CHECK-NEXT: [6.0] - N2UnitS +# CHECK-NEXT: [6.1] - N2UnitS +# CHECK-NEXT: [7] - N2UnitV0 +# CHECK-NEXT: [8] - N2UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 7.00 4.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 1.00 - bfcvt h0, s0 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-complxnum-instructions.s new file mode 100644 index 0000000000000..fdb8866fc2e6d --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-complxnum-instructions.s @@ -0,0 +1,42 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -instruction-tables < %p/Inputs/complxnum-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 2 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 4 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N2UnitB +# CHECK-NEXT: [0.1] - N2UnitB +# CHECK-NEXT: [1.0] - N2UnitD +# CHECK-NEXT: [1.1] - N2UnitD +# CHECK-NEXT: [2] - N2UnitL2 +# CHECK-NEXT: [3.0] - N2UnitL01 +# CHECK-NEXT: [3.1] - N2UnitL01 +# CHECK-NEXT: [4] - N2UnitM0 +# CHECK-NEXT: [5] - N2UnitM1 +# CHECK-NEXT: [6.0] - N2UnitS +# CHECK-NEXT: [6.1] - N2UnitS +# CHECK-NEXT: [7] - N2UnitV0 +# CHECK-NEXT: [8] - N2UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-fp16fml-instructions.s new file mode 100644 index 0000000000000..4e955e39254ae --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-fp16fml-instructions.s @@ -0,0 +1,66 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -instruction-tables < %p/Inputs/fp16fml-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.50 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 5 0.50 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 5 0.50 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 5 0.50 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 5 0.50 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.4s, v0.4h, v0.4h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N2UnitB +# CHECK-NEXT: [0.1] - N2UnitB +# CHECK-NEXT: [1.0] - N2UnitD +# CHECK-NEXT: [1.1] - N2UnitD +# CHECK-NEXT: [2] - N2UnitL2 +# CHECK-NEXT: [3.0] - N2UnitL01 +# CHECK-NEXT: [3.1] - N2UnitL01 +# CHECK-NEXT: [4] - N2UnitM0 +# CHECK-NEXT: [5] - N2UnitM1 +# CHECK-NEXT: [6.0] - N2UnitS +# CHECK-NEXT: [6.1] - N2UnitS +# CHECK-NEXT: [7] - N2UnitV0 +# CHECK-NEXT: [8] - N2UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 8.00 8.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-fptoint-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-fptoint-instructions.s new file mode 100644 index 0000000000000..7eb5a3dd4df23 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-fptoint-instructions.s @@ -0,0 +1,58 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -instruction-tables < %p/Inputs/fptoint-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 1.00 frint32x v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint32x v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint32x v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint32z v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint32z v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint32z v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint64x v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint64x v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint64x v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint64z v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint64z v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint64z v0.4s, v0.4s + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N2UnitB +# CHECK-NEXT: [0.1] - N2UnitB +# CHECK-NEXT: [1.0] - N2UnitD +# CHECK-NEXT: [1.1] - N2UnitD +# CHECK-NEXT: [2] - N2UnitL2 +# CHECK-NEXT: [3.0] - N2UnitL01 +# CHECK-NEXT: [3.1] - N2UnitL01 +# CHECK-NEXT: [4] - N2UnitM0 +# CHECK-NEXT: [5] - N2UnitM1 +# CHECK-NEXT: [6.0] - N2UnitS +# CHECK-NEXT: [6.1] - N2UnitS +# CHECK-NEXT: [7] - N2UnitV0 +# CHECK-NEXT: [8] - N2UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 16.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint32x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint32z v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint64x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint64z v0.4s, v0.4s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-i8mm-instructions.s new file mode 100644 index 0000000000000..90c5fbf86f6dd --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-i8mm-instructions.s @@ -0,0 +1,52 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -instruction-tables < %p/Inputs/i8mm-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 usmmla v0.4s, v0.16b, v0.16b + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N2UnitB +# CHECK-NEXT: [0.1] - N2UnitB +# CHECK-NEXT: [1.0] - N2UnitD +# CHECK-NEXT: [1.1] - N2UnitD +# CHECK-NEXT: [2] - N2UnitL2 +# CHECK-NEXT: [3.0] - N2UnitL01 +# CHECK-NEXT: [3.1] - N2UnitL01 +# CHECK-NEXT: [4] - N2UnitM0 +# CHECK-NEXT: [5] - N2UnitM1 +# CHECK-NEXT: [6.0] - N2UnitS +# CHECK-NEXT: [6.1] - N2UnitS +# CHECK-NEXT: [7] - N2UnitV0 +# CHECK-NEXT: [8] - N2UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 4.50 4.50 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-neon-instructions.s index 13c1403f356ee..79aa6c6bf03d0 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-neon-instructions.s @@ -1,1073 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -and v0.8b, v0.8b, v0.8b -bic v0.4h, #15, lsl #8 -bic v0.8b, v0.8b, v0.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd v0.4s, v0.4s, v0.4s -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt v0.2d, v0.2d, v0.2d -fadd v0.4s, v0.4s, v0.4s -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v0.4s, v0.4s, v0.4s -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fdiv v0.2s, v0.2s, v0.2s -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fmla d0, d1, v0.d[1] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmls d0, d4, v0.d[1] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecpx d16, d19 -frecpx s18, s10 -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrte v0.8h, v0.8h -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.4s, v1.4s }, [sp], #32 -ld1 { v0.4s, v1.4s, v2.4s }, [sp] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.8h }, [x15], x2 -ld1 { v0.8h, v1.8h }, [x15] -ld1 { v0.b }[9], [x0] -ld1 { v0.b }[9], [x0], #1 -ld1r { v0.16b }, [x0] -ld1r { v0.16b }, [x0], #1 -ld1r { v0.8h }, [x15] -ld1r { v0.8h }, [x15], #2 -ld2 { v0.16b, v1.16b }, [x0], x1 -ld2 { v0.8b, v1.8b }, [x0] -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], #4 -ld2r { v0.2d, v1.2d }, [x0] -ld2r { v0.2d, v1.2d }, [x0], #16 -ld2r { v0.4s, v1.4s }, [sp] -ld2r { v0.4s, v1.4s }, [sp], #8 -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3r { v0.4h, v1.4h, v2.4h }, [x15] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v0.8b, v1.8b, v2.8b }, [x0] -ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 -mla v0.8b, v0.8b, v0.8b -mls v0.4h, v0.4h, v0.4h -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orr v0.16b, v0.16b, v0.16b -orr v0.8h, #31 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v0.8h, v0.8h -shadd v0.8b, v0.8b, v0.8b -shl d7, d10, #12 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.4s, v0.4s, #3 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v0.8b, v0.8b, v0.8b -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -smlal v0.2d, v0.2s, v0.2s -smlal v0.4s, v0.4h, v0.4h -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v0.4s, v0.4h, v0.4h -smlsl v0.8h, v0.8b, v0.8b -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v0.4s, v0.4h, v0.4h -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v0.4s, v0.8h, v0.8h -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v0.2d, v0.2s, #3 -sshll2 v0.4s, v0.8h, #3 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v0.16b }, [x0] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v0.8h, v0.8h -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -uminp v0.2s, v0.2s, v0.2s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -umlal v0.2d, v0.2s, v0.2s -umlal v0.4s, v0.4h, v0.4h -umlal v0.8h, v0.8b, v0.8b -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v0.4s, v0.4h, v0.4h -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v0.8h, v0.16b, v0.16b -umull v0.2d, v0.2s, v0.2s -umull v0.4s, v0.4h, v0.4h -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v0.4s, v0.8h, v0.8h -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd v0.8h, v0.8h, v0.8h -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urshl d8, d7, d4 -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -ushl d0, d0, d0 -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n2 -mattr=+aes -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1094,14 +26,31 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: 1 2 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 addp d1, v14.2d +# CHECK-NEXT: 1 2 1.00 addv s0, v0.4s +# CHECK-NEXT: 1 2 1.00 addv h0, v0.4h +# CHECK-NEXT: 2 4 1.00 addv h0, v0.8h +# CHECK-NEXT: 2 4 1.00 addv b0, v0.8b +# CHECK-NEXT: 1 4 1.00 addv b0, v0.16b +# CHECK-NEXT: 1 2 0.50 aesd v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 aese v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 aesimc v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: 1 2 0.50 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: 1 2 0.50 bic v24.2s, #70 +# CHECK-NEXT: 1 2 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: 1 2 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: 1 2 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: 1 2 0.50 cls v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cls v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 cls v0.4h, v0.4h @@ -1114,28 +63,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 clz v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 clz v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: 1 2 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: 1 2 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: 1 2 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: 1 2 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: 1 2 0.50 cmhi d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 cmhs d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: 1 2 0.50 cmle d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: 1 2 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: 1 2 0.50 cmlt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: 1 2 0.50 cmtst d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: 1 2 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: 1 3 3.00 dup v0.16b, w28 @@ -1145,12 +103,26 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 3.00 dup v0.4s, w28 # CHECK-NEXT: 1 3 3.00 dup v0.8b, w28 # CHECK-NEXT: 1 3 3.00 dup v0.8h, w28 +# CHECK-NEXT: 1 2 0.50 mov b0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 mov d0, v0.d[1] +# CHECK-NEXT: 1 2 0.50 mov h0, v0.h[1] +# CHECK-NEXT: 1 2 0.50 mov s0, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.16b, v0.b[1] +# CHECK-NEXT: 1 2 0.50 dup v0.2d, v0.d[1] +# CHECK-NEXT: 1 2 0.50 dup v0.2s, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.4h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 dup v0.4s, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.8b, v0.b[1] +# CHECK-NEXT: 1 2 0.50 dup v0.8h, v0.h[1] # CHECK-NEXT: 1 2 0.50 eor v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 ext v0.16b, v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 fabd d29, d24, d20 # CHECK-NEXT: 1 2 0.50 fabd s29, s24, s20 +# CHECK-NEXT: 1 2 0.50 fabd h27, h20, h17 +# CHECK-NEXT: 1 2 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: 1 2 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fabs h25, h7 # CHECK-NEXT: 1 2 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fabs v0.4h, v0.4h @@ -1158,39 +130,70 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 facge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facge s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facge h24, h26, h29 +# CHECK-NEXT: 1 2 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: 1 2 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: 1 2 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 facgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facgt s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facgt h0, h4, h10 # CHECK-NEXT: 1 2 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: 1 2 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: 1 2 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 faddp h10, v19.2h +# CHECK-NEXT: 1 2 0.50 faddp d11, v28.2d # CHECK-NEXT: 1 2 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 faddp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: 1 2 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: 1 2 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: 1 2 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h1, h16, h12 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: 1 2 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: 1 2 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: 1 2 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: 1 2 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: 1 2 0.50 fcvtas d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtas s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtas h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtas v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtas v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtas v0.4h, v0.4h @@ -1198,6 +201,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtas v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtau d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtau s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtau h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtau v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtau v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtau v0.4h, v0.4h @@ -1209,6 +213,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 fcvtl2 v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtms d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtms s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtms h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtms v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtms v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtms v0.4h, v0.4h @@ -1216,6 +221,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtms v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtmu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtmu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtmu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtmu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtmu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtmu v0.4h, v0.4h @@ -1227,6 +233,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 fcvtn2 v0.8h, v0.4s # CHECK-NEXT: 1 2 0.50 fcvtns d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtns s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtns h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtns v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtns v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtns v0.4h, v0.4h @@ -1234,6 +241,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtns v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtnu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtnu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtnu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtnu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtnu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtnu v0.4h, v0.4h @@ -1241,6 +249,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtnu v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtps d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtps s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtps h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtps v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtps v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtps v0.4h, v0.4h @@ -1248,6 +257,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtps v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtpu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtpu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtpu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtpu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtpu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtpu v0.4h, v0.4h @@ -1260,75 +270,132 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fcvtzs d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtzs s12, s13 # CHECK-NEXT: 1 2 0.50 fcvtzs s21, s12, #1 +# CHECK-NEXT: 1 2 0.50 fcvtzs h21, h14 +# CHECK-NEXT: 1 2 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: 1 2 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 2 0.50 fcvtzu d21, d14 # CHECK-NEXT: 1 2 0.50 fcvtzu s12, s13 # CHECK-NEXT: 1 2 0.50 fcvtzu s21, s12, #1 +# CHECK-NEXT: 1 2 0.50 fcvtzu h12, h13 +# CHECK-NEXT: 1 2 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fcvtzu v27.8h, v6.8h, #11 +# CHECK-NEXT: 2 15 15.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: 2 10 10.00 fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 7 7.00 fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 2 10 10.00 fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 13 13.00 fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmax v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: 1 2 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: 2 6 1.00 fmaxnmv h12, v11.8h +# CHECK-NEXT: 1 4 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: 1 2 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: 1 2 0.50 fmaxp s6, v2.2s +# CHECK-NEXT: 1 4 0.50 fmaxv h0, v0.4h +# CHECK-NEXT: 2 6 1.00 fmaxv h0, v0.8h +# CHECK-NEXT: 1 4 0.50 fmaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmin v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: 1 2 0.50 fminnmp d15, v8.2d # CHECK-NEXT: 1 2 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: 2 6 1.00 fminnmv h23, v17.8h +# CHECK-NEXT: 1 4 0.50 fminnmv s29, v17.4s # CHECK-NEXT: 1 2 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fminp h7, v10.2h +# CHECK-NEXT: 1 2 0.50 fminp s17, v7.2s +# CHECK-NEXT: 1 4 0.50 fminv h3, v30.4h +# CHECK-NEXT: 2 6 1.00 fminv h29, v12.8h +# CHECK-NEXT: 1 4 0.50 fminv s16, v19.4s # CHECK-NEXT: 1 4 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: 1 4 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmla v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: 1 4 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: 1 4 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: 1 4 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: 1 4 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: 1 4 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmls v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: 1 4 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: 1 4 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: 1 2 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: 1 3 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: 1 3 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: 1 3 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: 1 3 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: 1 3 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: 1 3 0.50 fmul h28, h14, h3 # CHECK-NEXT: 1 3 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: 1 3 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: 1 2 0.50 fmulx d23, d11, d1 # CHECK-NEXT: 1 2 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: 1 2 0.50 fmulx h20, h25, h0 # CHECK-NEXT: 1 3 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: 1 3 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: 1 3 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: 1 2 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 frecpe h20, h8 # CHECK-NEXT: 1 3 1.00 frecpe d13, d13 # CHECK-NEXT: 1 3 1.00 frecpe s19, s14 # CHECK-NEXT: 1 2 0.50 frecpe v0.2d, v0.2d @@ -1336,9 +403,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frecpe v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frecpe v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 frecps h29, h19, h8 +# CHECK-NEXT: 1 3 1.00 frecpx h18, h11 +# CHECK-NEXT: 1 4 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: 1 4 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 frecps d22, d30, d21 # CHECK-NEXT: 1 2 0.50 frecps s21, s16, s13 +# CHECK-NEXT: 1 4 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: 1 3 1.00 frecpx d16, d19 # CHECK-NEXT: 1 3 1.00 frecpx s18, s10 # CHECK-NEXT: 1 3 1.00 frinta v0.2d, v0.2d @@ -1376,13 +447,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frintz v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frintz v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 frsqrte h23, h26 # CHECK-NEXT: 1 3 1.00 frsqrte d21, d12 # CHECK-NEXT: 1 3 1.00 frsqrte s22, s13 # CHECK-NEXT: 1 2 0.50 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 frsqrte v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 frsqrte v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: 4 6 4.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: 1 2 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: 1 2 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -1391,52 +466,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 7 7.00 fsqrt v0.4h, v0.4h # CHECK-NEXT: 2 10 10.00 fsqrt v0.4s, v0.4s # CHECK-NEXT: 2 13 13.00 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: 1 2 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 6 0.33 * ld1 { v0.16b }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: 3 6 1.00 * ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: 4 7 1.33 * ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: 1 6 0.33 * ld1 { v24.8h }, [x27] +# CHECK-NEXT: 2 6 0.67 * ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 3 6 1.00 * ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: 4 7 1.33 * ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.4s }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: 4 7 1.33 * ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: 4 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.2d }, [x28] +# CHECK-NEXT: 2 6 0.67 * ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: 3 6 1.00 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: 4 6 1.00 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: 2 6 0.67 * ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: 3 6 1.00 * ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: 4 7 1.33 * ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: 2 6 0.67 * ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: 3 6 1.00 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: 4 7 1.33 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: 3 6 0.67 * ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 7 1.33 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 8 0.50 * ld1 { v0.b }[7], [x0] +# CHECK-NEXT: 3 8 0.50 * ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: 2 8 0.50 * ld1 { v18.h }[3], [x1] +# CHECK-NEXT: 2 8 0.50 * ld1 { v0.s }[1], [x15] +# CHECK-NEXT: 3 8 0.50 * ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: 2 8 0.50 * ld1 { v11.d }[0], [x13] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 8 0.50 * ld1 { v0.b }[9], [x0] # CHECK-NEXT: 3 8 0.50 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 2 8 0.50 * ld1r { v0.16b }, [x0] +# CHECK-NEXT: 3 8 0.50 * ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: 2 8 0.50 * ld1r { v0.4s }, [x15] +# CHECK-NEXT: 2 8 0.50 * ld1r { v3.1d }, [x15] +# CHECK-NEXT: 3 8 0.50 * ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: 2 8 0.50 * ld1r { v18.2d }, [x0] +# CHECK-NEXT: 2 8 0.50 * ld1r { v8.8b }, [x23] +# CHECK-NEXT: 2 8 0.50 * ld1r { v28.4h }, [x9] +# CHECK-NEXT: 2 8 0.50 * ld1r { v3.8h }, [x16] +# CHECK-NEXT: 2 8 0.50 * ld1r { v10.2s }, [x20] +# CHECK-NEXT: 3 8 1.00 * ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: 4 8 1.00 * ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: 3 8 1.00 * ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: 4 8 1.00 * ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: 4 8 1.00 * ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: 3 8 1.00 * ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: 3 8 1.00 * ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: 3 8 1.00 * ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: 4 8 1.00 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 3 8 1.00 * ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: 4 8 1.00 * ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: 3 8 0.50 * ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: 2 8 0.50 * ld1r { v0.8h }, [x15] # CHECK-NEXT: 3 8 0.50 * ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: 5 8 1.00 * ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 8 1.00 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 3 8 1.00 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 4 8 1.00 * ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: 4 8 1.00 * ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: 3 8 1.00 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 3 8 1.00 * ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: 4 8 1.00 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 3 8 1.00 * ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: 3 8 1.00 * ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: 3 8 1.00 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 3 8 1.00 * ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: 4 8 1.00 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 3 8 1.00 * ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: 3 8 1.00 * ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: 5 8 1.50 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: 3 8 1.00 * ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: 4 8 1.00 * ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: 3 8 1.00 * ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: 4 8 1.00 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 5 8 1.50 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 7 8 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 6 8 1.50 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: 5 8 1.50 * ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: 5 8 1.50 * ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: 5 8 1.50 * ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: 6 8 1.50 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: 7 8 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 5 8 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 6 8 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 5 8 1.50 * ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: 5 8 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 6 8 1.50 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: 5 8 1.50 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 6 8 1.50 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 5 8 1.50 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: 6 8 1.50 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: 5 8 1.50 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: 6 8 1.50 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 5 8 1.50 * ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: 6 8 1.50 * ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: 7 8 2.00 * ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: 8 9 2.00 * ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: 7 8 2.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: 8 9 2.00 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: 8 9 2.00 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: 5 8 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: 6 8 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 7 8 2.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 9 9 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 7 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 8 9 2.00 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: 7 8 2.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: 7 8 2.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: 8 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 8 8 2.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 7 8 2.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: 7 8 2.00 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: 8 8 2.00 * ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: 7 8 2.00 * ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: 7 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: 7 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 8 8 2.00 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: 9 8 2.00 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 8 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: 7 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 8 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 4 1.00 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: 1 4 1.00 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: 1 4 1.00 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: 1 4 1.00 mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: 1 2 0.50 mov b0, v0.b[15] # CHECK-NEXT: 1 2 0.50 mov d6, v0.d[1] # CHECK-NEXT: 1 2 0.50 mov h2, v0.h[5] # CHECK-NEXT: 1 2 0.50 mov s17, v0.s[2] +# CHECK-NEXT: 1 2 0.50 mov w8, v8.s[0] +# CHECK-NEXT: 1 2 0.50 mov x30, v18.d[0] # CHECK-NEXT: 1 2 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: 1 2 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: 1 2 0.50 mov v2.s[2], v0.s[2] @@ -1449,11 +635,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mov v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: 1 2 0.50 movi v0.16b, #31 +# CHECK-NEXT: 1 2 0.50 movi v14.8h, #174 +# CHECK-NEXT: 1 2 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: 1 2 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: 1 2 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: 1 2 0.50 movi v19.2s, #226 +# CHECK-NEXT: 1 2 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: 1 2 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: 1 2 0.50 movi v0.8b, #255 # CHECK-NEXT: 1 4 1.00 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: 1 4 1.00 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: 1 4 1.00 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: 1 4 1.00 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: 1 4 1.00 mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: 1 4 1.00 mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: 1 2 0.50 mvni v9.4h, #237 +# CHECK-NEXT: 1 2 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: 1 2 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: 1 2 0.50 mvni v0.2s, #0 # CHECK-NEXT: 1 2 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: 1 2 0.50 neg d29, d24 @@ -1467,8 +666,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: 1 2 0.50 mov v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orr v9.4h, #18 # CHECK-NEXT: 1 2 0.50 orr v0.8h, #31 +# CHECK-NEXT: 1 2 0.50 orr v4.4s, #0 # CHECK-NEXT: 1 3 1.00 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 3 1.00 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 pmull v0.8h, v0.8b, v0.8b @@ -1513,6 +715,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -1537,12 +740,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 saddlp v0.4h, v0.8b # CHECK-NEXT: 1 2 0.50 saddlp v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddlp v0.8h, v0.16b +# CHECK-NEXT: 1 2 1.00 saddlv d0, v0.4s +# CHECK-NEXT: 1 2 1.00 saddlv s0, v0.4h +# CHECK-NEXT: 2 4 1.00 saddlv s0, v0.8h +# CHECK-NEXT: 2 4 1.00 saddlv h0, v0.8b +# CHECK-NEXT: 1 4 1.00 saddlv h0, v0.16b # CHECK-NEXT: 1 2 0.50 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.50 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.50 saddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: 1 2 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 2 0.50 scvtf h4, h8, #9 +# CHECK-NEXT: 1 2 0.50 scvtf h5, h14 # CHECK-NEXT: 1 2 0.50 scvtf d21, d12 # CHECK-NEXT: 1 2 0.50 scvtf d21, d12, #64 # CHECK-NEXT: 1 2 0.50 scvtf s22, s13 @@ -1554,22 +764,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 scvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 scvtf v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: 4 6 4.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 scvtf v4.8h, v8.8h, #10 +# CHECK-NEXT: 1 3 0.50 sdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 sdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 sdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: 1 2 0.50 shl d7, d10, #12 +# CHECK-NEXT: 1 2 1.00 shl v23.8b, v18.8b, #6 # CHECK-NEXT: 1 2 1.00 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 1.00 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 2 1.00 shl v0.8h, v23.8h, #10 # CHECK-NEXT: 1 2 1.00 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: 1 2 1.00 shll v0.2d, v0.2s, #32 # CHECK-NEXT: 1 2 1.00 shll v0.4s, v0.4h, #16 # CHECK-NEXT: 1 2 1.00 shll v0.8h, v0.8b, #8 # CHECK-NEXT: 1 2 1.00 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: 1 2 1.00 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: 1 2 1.00 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: 1 2 1.00 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: 1 2 1.00 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: 1 2 1.00 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: 1 2 1.00 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: 1 2 1.00 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: 1 2 1.00 shll2 v0.8h, v0.16b, #8 @@ -1581,6 +794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: 1 2 0.50 sli d10, d14, #12 # CHECK-NEXT: 1 2 1.00 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 sli v0.2d, v0.2d, #3 @@ -1592,32 +806,56 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: 1 2 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: 1 2 0.50 smaxp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 2 4 1.00 smaxv b0, v0.8b +# CHECK-NEXT: 2 4 2.00 smaxv b0, v0.16b +# CHECK-NEXT: 1 2 1.00 smaxv h0, v0.4h +# CHECK-NEXT: 2 4 1.00 smaxv h0, v0.8h +# CHECK-NEXT: 1 2 1.00 smaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 smin v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 smin v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 2 4 1.00 sminv b0, v0.8b +# CHECK-NEXT: 2 4 2.00 sminv b0, v0.16b +# CHECK-NEXT: 1 2 1.00 sminv h0, v0.4h +# CHECK-NEXT: 2 4 1.00 sminv h0, v0.8h +# CHECK-NEXT: 1 2 1.00 sminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: 1 4 1.00 smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: 1 4 1.00 smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: 1 4 1.00 smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 0.50 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 3 0.50 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 0.50 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: 1 3 0.50 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: 1 3 0.50 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: 1 3 0.50 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqabs b19, b14 # CHECK-NEXT: 1 2 0.50 sqabs d18, d12 @@ -1631,6 +869,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: 1 2 0.50 sqadd h12, h18, h10 # CHECK-NEXT: 1 2 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sqdmlal d19, s24, s12 @@ -1638,17 +877,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: 1 2 0.50 sqdmlal s17, h27, h12 # CHECK-NEXT: 1 4 1.00 sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: 1 4 1.00 sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: 1 4 1.00 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: 1 4 1.00 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: 1 3 0.50 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: 1 3 0.50 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: 1 3 0.50 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: 1 3 0.50 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: 1 2 0.50 sqdmlsl d12, s23, s13 # CHECK-NEXT: 1 4 1.00 sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: 1 4 1.00 sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: 1 2 0.50 sqdmlsl s14, h12, h25 # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: 1 4 1.00 sqdmulh h10, h11, h12 # CHECK-NEXT: 1 4 1.00 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmulh s15, s14, v0.s[1] @@ -1674,6 +930,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 sqneg v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqneg v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah h0, h1, h2 +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlah s0, s1, s2 +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 4 1.00 sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh h0, h1, h2 +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlsh s0, s1, s2 +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4s, v1.4s, v2.4s # CHECK-NEXT: 1 4 1.00 sqrdmulh h10, h11, h12 # CHECK-NEXT: 1 4 1.00 sqrdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqrdmulh s15, s14, v0.s[1] @@ -1685,6 +965,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 1.00 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 sqshl s17, s4, s23 +# CHECK-NEXT: 1 2 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: 1 2 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: 1 2 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: 1 2 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: 1 2 0.50 sqrshrn s15, d12, #9 @@ -1710,6 +993,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqshl h3, h4, h15 # CHECK-NEXT: 1 4 1.00 sqshl s14, s17, #22 # CHECK-NEXT: 1 4 1.00 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: 1 4 1.00 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: 1 4 1.00 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 1.00 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 1.00 sqshl v0.2s, v0.2s, v0.2s @@ -1806,8 +1090,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 1.00 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 1.00 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 1.00 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: 1 2 1.00 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: 1 2 1.00 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: 1 2 1.00 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: 1 2 1.00 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: 1 2 1.00 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: 1 2 0.50 sshr d15, d16, #12 # CHECK-NEXT: 1 2 1.00 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 sshr v0.2d, v0.2d, #3 @@ -1836,30 +1124,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 2 0.50 * st1 { v18.8b }, [x15] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: 6 2 1.50 * st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: 8 2 2.00 * st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: 2 2 0.50 * st1 { v19.4h }, [x7] +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: 4 2 1.00 * st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: 4 2 1.00 * st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: 2 2 0.50 * st1 { v27.8h }, [x17] +# CHECK-NEXT: 6 2 1.50 * st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: 8 2 2.00 * st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v25.2s }, [x6] +# CHECK-NEXT: 2 2 0.50 * st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: 4 2 1.00 * st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4s }, [x19] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: 8 2 2.00 * st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: 2 2 0.50 * st1 { v20.1d }, [x10] +# CHECK-NEXT: 2 2 0.50 * st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: 4 2 1.00 * st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: 4 2 1.00 * st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: 7 2 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 6 2 1.50 * st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: 8 2 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 6 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 4 0.50 * st1 { v1.b }[5], [x1] +# CHECK-NEXT: 2 4 0.50 * st1 { v0.h }[2], [x1] +# CHECK-NEXT: 2 4 0.50 * st1 { v31.s }[1], [x16] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 4 0.50 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 3 4 0.50 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 5 4 1.00 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 2 4 0.50 * st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 4 4 1.00 * st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: 2 4 0.50 * st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: 4 4 1.00 * st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: 2 4 0.50 * st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: 4 4 1.00 * st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: 4 4 1.00 * st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: 2 4 0.50 * st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: 2 4 0.50 * st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: 2 4 0.50 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 3 4 0.50 * st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: 2 4 0.50 * st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: 4 5 1.00 * st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: 6 6 1.50 * st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: 4 5 1.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 7 6 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 6 6 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: 4 5 1.00 * st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: 6 6 1.50 * st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: 6 6 1.50 * st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: 6 6 1.50 * st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: 6 6 1.50 * st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: 7 6 1.50 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 6 6 1.50 * st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: 6 6 1.50 * st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: 6 6 1.50 * st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: 12 7 3.00 * st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: 6 6 1.50 * st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: 12 7 3.00 * st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: 6 6 1.50 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 13 7 3.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 12 7 3.00 * st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: 8 5 2.00 * st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: 6 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 6 6 1.50 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: 6 6 1.50 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: 6 4 1.50 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: 6 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] # CHECK-NEXT: 7 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +# CHECK-NEXT: 7 4 1.50 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.50 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.50 sub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: 1 2 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: 1 2 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: 1 2 0.50 suqadd b19, b14 # CHECK-NEXT: 1 2 0.50 suqadd d18, d22 # CHECK-NEXT: 1 2 0.50 suqadd h20, h15 @@ -1902,6 +1256,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: 1 4 1.00 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 1.00 uabal v0.8h, v0.8b, v0.8b @@ -1909,6 +1264,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: 1 2 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -1933,14 +1289,23 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 uaddlp v0.4h, v0.8b # CHECK-NEXT: 1 2 0.50 uaddlp v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddlp v0.8h, v0.16b +# CHECK-NEXT: 1 2 1.00 uaddlv d0, v0.4s +# CHECK-NEXT: 1 2 1.00 uaddlv s0, v0.4h +# CHECK-NEXT: 2 4 1.00 uaddlv s0, v0.8h +# CHECK-NEXT: 2 4 1.00 uaddlv h0, v0.8b +# CHECK-NEXT: 1 4 1.00 uaddlv h0, v0.16b # CHECK-NEXT: 1 2 0.50 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.50 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.50 uaddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: 1 2 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 3 3.00 ucvtf h17, x12 +# CHECK-NEXT: 1 2 0.50 ucvtf h22, h16, #11 +# CHECK-NEXT: 1 2 0.50 ucvtf h7, h21 # CHECK-NEXT: 1 2 0.50 ucvtf d21, d14 # CHECK-NEXT: 1 2 0.50 ucvtf d21, d14, #64 +# CHECK-NEXT: 1 3 3.00 ucvtf s8, x0 # CHECK-NEXT: 1 2 0.50 ucvtf s22, s13 # CHECK-NEXT: 1 2 0.50 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 1.00 ucvtf v0.2d, v0.2d @@ -1950,9 +1315,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: 4 6 4.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 ucvtf v22.8h, v20.8h, #10 +# CHECK-NEXT: 1 3 0.50 udot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 udot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 udot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: 1 2 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umax v0.4s, v0.4s, v0.4s @@ -1960,37 +1332,69 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 2 4 1.00 umaxv b0, v0.8b +# CHECK-NEXT: 2 4 2.00 umaxv b0, v0.16b +# CHECK-NEXT: 1 2 1.00 umaxv h0, v0.4h +# CHECK-NEXT: 2 4 1.00 umaxv h0, v0.8h +# CHECK-NEXT: 1 2 1.00 umaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: 1 2 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: 1 2 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uminp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 2 4 1.00 uminv b0, v0.8b +# CHECK-NEXT: 2 4 2.00 uminv b0, v0.16b +# CHECK-NEXT: 1 2 1.00 uminv h0, v0.4h +# CHECK-NEXT: 2 4 1.00 uminv h0, v0.8h +# CHECK-NEXT: 1 2 1.00 uminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: 1 4 1.00 umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: 1 4 1.00 umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: 1 4 1.00 umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: 1 4 1.00 umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: 1 4 1.00 umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 umov w6, v22.b[0] +# CHECK-NEXT: 1 2 0.50 umov w0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 umov w10, v25.h[0] +# CHECK-NEXT: 1 2 0.50 umov w0, v0.h[1] +# CHECK-NEXT: 1 2 0.50 mov w0, v0.s[1] +# CHECK-NEXT: 1 2 0.50 mov x0, v0.d[1] # CHECK-NEXT: 1 3 0.50 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 0.50 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: 1 3 0.50 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 0.50 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: 1 3 0.50 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: 1 3 0.50 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: 1 3 0.50 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: 1 2 0.50 uqadd s0, s24, s30 # CHECK-NEXT: 1 2 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: 1 4 1.00 uqrshl b11, b20, b30 # CHECK-NEXT: 1 4 1.00 uqrshl s23, s20, s16 +# CHECK-NEXT: 1 4 1.00 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: 1 4 1.00 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 1.00 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: 1 2 0.50 uqrshrn h12, s10, #14 @@ -2013,6 +1417,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 1.00 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 1.00 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 4 1.00 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: 1 4 1.00 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 1.00 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 uqshl v0.8b, v0.8b, #3 @@ -2027,8 +1432,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 uqsub s16, s21, s6 # CHECK-NEXT: 1 2 0.50 uqsub d16, d16, d16 # CHECK-NEXT: 1 2 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: 1 4 1.00 uqxtn b18, h18 # CHECK-NEXT: 1 4 1.00 uqxtn h20, s17 # CHECK-NEXT: 1 4 1.00 uqxtn s19, d14 @@ -2043,7 +1450,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: 1 4 1.00 urshl d8, d7, d4 +# CHECK-NEXT: 1 4 1.00 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: 1 4 1.00 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 1.00 urshl v0.4s, v0.4s, v0.4s @@ -2067,10 +1476,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 1.00 ursra v0.8h, v0.8h, #3 # CHECK-NEXT: 1 2 1.00 ushl d0, d0, d0 +# CHECK-NEXT: 1 2 1.00 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 1.00 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 1.00 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 1.00 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: 1 2 1.00 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: 1 2 1.00 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: 1 2 1.00 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: 1 2 1.00 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: 1 2 1.00 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ushr d10, d17, #18 # CHECK-NEXT: 1 2 1.00 ushr v0.16b, v0.16b, #3 @@ -2080,6 +1494,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 1.00 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 1.00 ushr v0.8h, v0.8h, #3 +# CHECK-NEXT: 1 2 0.50 U smov w15, v22.b[0] +# CHECK-NEXT: 1 2 0.50 U smov w26, v27.h[0] +# CHECK-NEXT: 1 2 0.50 U smov x21, v0.b[0] +# CHECK-NEXT: 1 2 0.50 U smov x9, v27.h[0] +# CHECK-NEXT: 1 2 0.50 U smov x15, v3.s[0] +# CHECK-NEXT: 1 2 0.50 smov w0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 smov w0, v0.h[1] +# CHECK-NEXT: 1 2 0.50 smov x0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 smov x0, v0.h[1] +# CHECK-NEXT: 1 2 0.50 smov x0, v0.s[1] # CHECK-NEXT: 1 2 0.50 usqadd b19, b14 # CHECK-NEXT: 1 2 0.50 usqadd d18, d22 # CHECK-NEXT: 1 2 0.50 usqadd h20, h15 @@ -2163,7 +1587,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] -# CHECK-NEXT: - - - - 26.67 52.17 52.17 32.75 7.75 7.75 7.75 712.00 621.00 +# CHECK-NEXT: - - - - 102.67 199.67 199.67 43.25 12.25 12.25 12.25 1102.50 948.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: @@ -2183,14 +1607,31 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp d1, v14.2d +# CHECK-NEXT: - - - - - - - - - - - - 1.00 addv s0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - 1.00 addv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 addv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 addv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 addv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aesd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aese v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aesimc v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v24.2s, #70 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cls v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cls v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cls v0.4h, v0.4h @@ -2203,28 +1644,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 clz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 clz v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhi d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhs d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmle d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmlt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmtst d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: - - - - - - - 3.00 - - - - - dup v0.16b, w28 @@ -2234,12 +1684,26 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 3.00 - - - - - dup v0.4s, w28 # CHECK-NEXT: - - - - - - - 3.00 - - - - - dup v0.8b, w28 # CHECK-NEXT: - - - - - - - 3.00 - - - - - dup v0.8h, w28 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov b0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov d0, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov h0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov s0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.16b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.2d, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.2s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.4h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.4s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.8b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.8h, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 eor v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ext v0.16b, v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd d29, d24, d20 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd s29, s24, s20 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd h27, h20, h17 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs h25, h7 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.4h, v0.4h @@ -2247,39 +1711,70 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge h24, h26, h29 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt h0, h4, h10 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp h10, v19.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp d11, v28.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge h1, h16, h12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtas d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtas s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtas h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtas v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtas v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtas v0.4h, v0.4h @@ -2287,6 +1782,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtas v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtau d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtau s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtau h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtau v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtau v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtau v0.4h, v0.4h @@ -2298,6 +1794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtl2 v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtms d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtms s22, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtms h22, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtms v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtms v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtms v0.4h, v0.4h @@ -2305,6 +1802,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtms v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtmu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtmu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtmu h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtmu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtmu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtmu v0.4h, v0.4h @@ -2316,6 +1814,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtn2 v0.8h, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtns d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtns s22, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtns h22, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtns v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtns v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtns v0.4h, v0.4h @@ -2323,6 +1822,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtns v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtnu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtnu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtnu h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtnu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtnu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtnu v0.4h, v0.4h @@ -2330,6 +1830,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtnu v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtps d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtps s22, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtps h22, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtps v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtps v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtps v0.4h, v0.4h @@ -2337,6 +1838,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtps v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtpu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtpu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtpu h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtpu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtpu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtpu v0.4h, v0.4h @@ -2349,75 +1851,132 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs s12, s13 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs h21, h14 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu s12, s13 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu v27.8h, v6.8h, #11 +# CHECK-NEXT: - - - - - - - - - - - 15.00 - fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 10.00 - fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 7.00 - fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 10.00 - fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 13.00 - fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmax v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fmaxnmv h12, v11.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp s6, v2.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fmaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmin v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp d15, v8.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fminnmv h23, v17.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmv s29, v17.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp h7, v10.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp s17, v7.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminv h3, v30.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fminv h29, v12.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminv s16, v19.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul h28, h14, h3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx d23, d11, d1 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx h20, h25, h0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe h20, h8 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe s19, s14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecpe v0.2d, v0.2d @@ -2425,9 +1984,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frecpe v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 4.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps h29, h19, h8 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpx h18, h11 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps s21, s16, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpx d16, d19 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpx s18, s10 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frinta v0.2d, v0.2d @@ -2465,13 +2028,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frintz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 4.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte h23, h26 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte s22, s13 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - frsqrte v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: - - - - - - - - - - - 4.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -2480,52 +2047,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 7.00 - fsqrt v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 10.00 - fsqrt v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 13.00 - fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v24.8h }, [x27] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v3.4s }, [x4] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v3.2d }, [x28] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v0.b }[7], [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v18.h }[3], [x1] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v0.s }[1], [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v11.d }[0], [x13] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v0.b }[9], [x0] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v0.16b }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v0.4s }, [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v3.1d }, [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v18.2d }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v8.8b }, [x23] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v28.4h }, [x9] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v3.8h }, [x16] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v10.2s }, [x20] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.00 1.00 ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.00 1.00 ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.00 1.00 ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.00 1.00 ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1r { v0.8h }, [x15] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 1.00 1.00 ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 1.00 1.00 ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 1.00 1.00 ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 1.50 1.50 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 1.50 1.50 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 2.00 2.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 2.00 2.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 2.00 2.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - - - - 1.00 - mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov b0, v0.b[15] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov d6, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov h2, v0.h[5] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov s17, v0.s[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov w8, v8.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov x30, v18.d[0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v2.s[2], v0.s[2] @@ -2538,11 +2216,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.16b, #31 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v14.8h, #174 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v19.2s, #226 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.8b, #255 # CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v9.4h, #237 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 neg d29, d24 @@ -2556,8 +2247,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orr v9.4h, #18 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orr v0.8h, #31 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orr v4.4s, #0 # CHECK-NEXT: - - - - - - - - - - - 1.00 - pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - pmull v0.8h, v0.8b, v0.8b @@ -2602,6 +2296,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -2626,12 +2321,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddlp v0.4h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddlp v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 saddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - 1.00 saddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 saddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 saddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 saddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf h4, h8, #9 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf h5, h14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf d21, d12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf d21, d12, #64 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf s22, s13 @@ -2643,22 +2345,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: - - - - - - - - - - - 4.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf v4.8h, v8.8h, #10 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v23.8b, v18.8b, #6 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.8h, v23.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.2d, v0.2s, #32 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.4s, v0.4h, #16 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.8h, v0.8b, #8 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.8h, v0.16b, #8 @@ -2670,6 +2375,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sli v0.2d, v0.2d, #3 @@ -2681,32 +2387,56 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 smaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 smaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 smaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 smaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 smaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smin v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smin v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 sminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 sminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sminv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 sminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs b19, b14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs d18, d12 @@ -2720,6 +2450,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd h12, h18, h10 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmlal d19, s24, s12 @@ -2727,17 +2458,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmlal s17, h27, h12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmlsl d12, s23, s13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqdmlsl s14, h12, h25 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh s15, s14, v0.s[1] @@ -2763,6 +2511,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqneg v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh s15, s14, v0.s[1] @@ -2774,6 +2546,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl s17, s4, s23 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqrshrn s15, d12, #9 @@ -2799,6 +2574,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl h3, h4, h15 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl s14, s17, #22 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.2s, v0.2s, v0.2s @@ -2895,8 +2671,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshr v0.2d, v0.2d, #3 @@ -2925,30 +2705,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v18.8b }, [x15] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v19.4h }, [x7] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v27.8h }, [x17] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v25.2s }, [x6] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v22.4s }, [x19] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v20.1d }, [x10] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v8.2d }, [x15] +# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v1.b }[5], [x1] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.h }[2], [x1] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v31.s }[1], [x16] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: - - - - - 3.00 3.00 - - - - 3.00 3.00 st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: - - - - - 3.00 3.00 - - - - 3.00 3.00 st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - 3.00 3.00 0.25 0.25 0.25 0.25 3.00 3.00 st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - 3.00 3.00 - - - - 3.00 3.00 st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] # CHECK-NEXT: - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +# CHECK-NEXT: - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 suqadd h20, h15 @@ -2991,6 +2837,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal v0.8h, v0.8b, v0.8b @@ -2998,6 +2845,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -3022,14 +2870,23 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddlp v0.4h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddlp v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uaddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uaddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - 3.00 - - - - - ucvtf h17, x12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf h22, h16, #11 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf h7, h21 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf d21, d14, #64 +# CHECK-NEXT: - - - - - - - 3.00 - - - - - ucvtf s8, x0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf s22, s13 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - 1.00 - ucvtf v0.2d, v0.2d @@ -3039,9 +2896,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: - - - - - - - - - - - 4.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf v22.8h, v20.8h, #10 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umax v0.4s, v0.4s, v0.4s @@ -3049,37 +2913,69 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 umaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 umaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 umaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 umaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 umaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 uminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uminv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umov w6, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umov w10, v25.h[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov w0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd s0, s24, s30 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl b11, b20, b30 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqrshrn h12, s10, #14 @@ -3102,6 +2998,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.8b, v0.8b, #3 @@ -3116,8 +3013,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub s16, s21, s6 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub d16, d16, d16 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqxtn b18, h18 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqxtn h20, s17 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqxtn s19, d14 @@ -3132,7 +3031,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl d8, d7, d4 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v0.4s, v0.4s, v0.4s @@ -3156,10 +3057,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ursra v0.8h, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl d0, d0, d0 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.16b, v0.16b, #3 @@ -3169,6 +3075,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov w15, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov w26, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x21, v0.b[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x9, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x15, v3.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x0, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usqadd h20, h15 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-bf16-instructions.s new file mode 100644 index 0000000000000..02e547f75addc --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-bf16-instructions.s @@ -0,0 +1,56 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -instruction-tables < %p/Inputs/bf16-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 1.00 bfcvt h0, s0 +# CHECK-NEXT: 2 4 2.00 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 2 4 2.00 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 2 0.50 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: 1 4 0.50 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 5 0.50 bfmmla v0.4s, v0.8h, v0.8h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N3UnitB +# CHECK-NEXT: [0.1] - N3UnitB +# CHECK-NEXT: [1.0] - N3UnitD +# CHECK-NEXT: [1.1] - N3UnitD +# CHECK-NEXT: [2] - N3UnitL2 +# CHECK-NEXT: [3.0] - N3UnitL01 +# CHECK-NEXT: [3.1] - N3UnitL01 +# CHECK-NEXT: [4] - N3UnitM0 +# CHECK-NEXT: [5] - N3UnitM1 +# CHECK-NEXT: [6.0] - N3UnitS +# CHECK-NEXT: [6.1] - N3UnitS +# CHECK-NEXT: [7] - N3UnitV0 +# CHECK-NEXT: [8] - N3UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 9.00 4.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 1.00 - bfcvt h0, s0 +# CHECK-NEXT: - - - - - - - - - - - 2.00 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-complxnum-instructions.s new file mode 100644 index 0000000000000..6fab828dfb31f --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-complxnum-instructions.s @@ -0,0 +1,42 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -instruction-tables < %p/Inputs/complxnum-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 3 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 4 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N3UnitB +# CHECK-NEXT: [0.1] - N3UnitB +# CHECK-NEXT: [1.0] - N3UnitD +# CHECK-NEXT: [1.1] - N3UnitD +# CHECK-NEXT: [2] - N3UnitL2 +# CHECK-NEXT: [3.0] - N3UnitL01 +# CHECK-NEXT: [3.1] - N3UnitL01 +# CHECK-NEXT: [4] - N3UnitM0 +# CHECK-NEXT: [5] - N3UnitM1 +# CHECK-NEXT: [6.0] - N3UnitS +# CHECK-NEXT: [6.1] - N3UnitS +# CHECK-NEXT: [7] - N3UnitV0 +# CHECK-NEXT: [8] - N3UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-fp16fml-instructions.s new file mode 100644 index 0000000000000..394599140b481 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-fp16fml-instructions.s @@ -0,0 +1,66 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -instruction-tables < %p/Inputs/fp16fml-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.50 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.50 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 2 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.50 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 2 0.50 fmlsl2 v0.4s, v0.4h, v0.4h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N3UnitB +# CHECK-NEXT: [0.1] - N3UnitB +# CHECK-NEXT: [1.0] - N3UnitD +# CHECK-NEXT: [1.1] - N3UnitD +# CHECK-NEXT: [2] - N3UnitL2 +# CHECK-NEXT: [3.0] - N3UnitL01 +# CHECK-NEXT: [3.1] - N3UnitL01 +# CHECK-NEXT: [4] - N3UnitM0 +# CHECK-NEXT: [5] - N3UnitM1 +# CHECK-NEXT: [6.0] - N3UnitS +# CHECK-NEXT: [6.1] - N3UnitS +# CHECK-NEXT: [7] - N3UnitV0 +# CHECK-NEXT: [8] - N3UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 8.00 8.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-fptoint-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-fptoint-instructions.s new file mode 100644 index 0000000000000..d7958c7c0cee0 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-fptoint-instructions.s @@ -0,0 +1,58 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -instruction-tables < %p/Inputs/fptoint-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 1.00 frint32x v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint32x v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint32x v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint32z v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint32z v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint32z v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint64x v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint64x v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint64x v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint64z v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint64z v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint64z v0.4s, v0.4s + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N3UnitB +# CHECK-NEXT: [0.1] - N3UnitB +# CHECK-NEXT: [1.0] - N3UnitD +# CHECK-NEXT: [1.1] - N3UnitD +# CHECK-NEXT: [2] - N3UnitL2 +# CHECK-NEXT: [3.0] - N3UnitL01 +# CHECK-NEXT: [3.1] - N3UnitL01 +# CHECK-NEXT: [4] - N3UnitM0 +# CHECK-NEXT: [5] - N3UnitM1 +# CHECK-NEXT: [6.0] - N3UnitS +# CHECK-NEXT: [6.1] - N3UnitS +# CHECK-NEXT: [7] - N3UnitV0 +# CHECK-NEXT: [8] - N3UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 16.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint32x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint32z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint32z v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint64x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frint64z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 2.00 - frint64z v0.4s, v0.4s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-i8mm-instructions.s new file mode 100644 index 0000000000000..1ff0ebaf136bc --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-i8mm-instructions.s @@ -0,0 +1,52 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -instruction-tables < %p/Inputs/i8mm-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 usmmla v0.4s, v0.16b, v0.16b + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - N3UnitB +# CHECK-NEXT: [0.1] - N3UnitB +# CHECK-NEXT: [1.0] - N3UnitD +# CHECK-NEXT: [1.1] - N3UnitD +# CHECK-NEXT: [2] - N3UnitL2 +# CHECK-NEXT: [3.0] - N3UnitL01 +# CHECK-NEXT: [3.1] - N3UnitL01 +# CHECK-NEXT: [4] - N3UnitM0 +# CHECK-NEXT: [5] - N3UnitM1 +# CHECK-NEXT: [6.0] - N3UnitS +# CHECK-NEXT: [6.1] - N3UnitS +# CHECK-NEXT: [7] - N3UnitV0 +# CHECK-NEXT: [8] - N3UnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] +# CHECK-NEXT: - - - - - - - - - - - 4.50 4.50 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-neon-instructions.s index 2f7563df9a7d9..d25122b474de5 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-neon-instructions.s @@ -1,1073 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -and v0.8b, v0.8b, v0.8b -bic v0.4h, #15, lsl #8 -bic v0.8b, v0.8b, v0.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd v0.4s, v0.4s, v0.4s -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt v0.2d, v0.2d, v0.2d -fadd v0.4s, v0.4s, v0.4s -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v0.4s, v0.4s, v0.4s -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fdiv v0.2s, v0.2s, v0.2s -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fmla d0, d1, v0.d[1] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmls d0, d4, v0.d[1] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecpx d16, d19 -frecpx s18, s10 -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrte v0.8h, v0.8h -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.4s, v1.4s }, [sp], #32 -ld1 { v0.4s, v1.4s, v2.4s }, [sp] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.8h }, [x15], x2 -ld1 { v0.8h, v1.8h }, [x15] -ld1 { v0.b }[9], [x0] -ld1 { v0.b }[9], [x0], #1 -ld1r { v0.16b }, [x0] -ld1r { v0.16b }, [x0], #1 -ld1r { v0.8h }, [x15] -ld1r { v0.8h }, [x15], #2 -ld2 { v0.16b, v1.16b }, [x0], x1 -ld2 { v0.8b, v1.8b }, [x0] -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], #4 -ld2r { v0.2d, v1.2d }, [x0] -ld2r { v0.2d, v1.2d }, [x0], #16 -ld2r { v0.4s, v1.4s }, [sp] -ld2r { v0.4s, v1.4s }, [sp], #8 -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3r { v0.4h, v1.4h, v2.4h }, [x15] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v0.8b, v1.8b, v2.8b }, [x0] -ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 -mla v0.8b, v0.8b, v0.8b -mls v0.4h, v0.4h, v0.4h -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orr v0.16b, v0.16b, v0.16b -orr v0.8h, #31 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v0.8h, v0.8h -shadd v0.8b, v0.8b, v0.8b -shl d7, d10, #12 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.4s, v0.4s, #3 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v0.8b, v0.8b, v0.8b -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -smlal v0.2d, v0.2s, v0.2s -smlal v0.4s, v0.4h, v0.4h -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v0.4s, v0.4h, v0.4h -smlsl v0.8h, v0.8b, v0.8b -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v0.4s, v0.4h, v0.4h -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v0.4s, v0.8h, v0.8h -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v0.2d, v0.2s, #3 -sshll2 v0.4s, v0.8h, #3 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v0.16b }, [x0] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v0.8h, v0.8h -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -uminp v0.2s, v0.2s, v0.2s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -umlal v0.2d, v0.2s, v0.2s -umlal v0.4s, v0.4h, v0.4h -umlal v0.8h, v0.8b, v0.8b -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v0.4s, v0.4h, v0.4h -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v0.8h, v0.16b, v0.16b -umull v0.2d, v0.2s, v0.2s -umull v0.4s, v0.4h, v0.4h -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v0.4s, v0.8h, v0.8h -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd v0.8h, v0.8h, v0.8h -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urshl d8, d7, d4 -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -ushl d0, d0, d0 -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-n3 -mattr=+aes -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1094,14 +26,31 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: 1 2 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 addp d1, v14.2d +# CHECK-NEXT: 1 3 1.00 addv s0, v0.4s +# CHECK-NEXT: 1 3 1.00 addv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 addv h0, v0.8h +# CHECK-NEXT: 2 5 1.00 addv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 addv b0, v0.16b +# CHECK-NEXT: 1 2 0.50 aesd v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 aese v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 aesimc v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: 1 2 0.50 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: 1 2 0.50 bic v24.2s, #70 +# CHECK-NEXT: 1 2 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: 1 2 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: 1 2 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: 1 2 0.50 cls v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cls v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 cls v0.4h, v0.4h @@ -1114,28 +63,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 clz v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 clz v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: 1 2 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: 1 2 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: 1 2 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: 1 2 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: 1 2 0.50 cmhi d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 cmhs d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: 1 2 0.50 cmle d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: 1 2 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: 1 2 0.50 cmlt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: 1 2 0.50 cmtst d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: 1 2 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 dup v0.16b, w28 @@ -1145,12 +103,26 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 dup v0.4s, w28 # CHECK-NEXT: 1 3 1.00 dup v0.8b, w28 # CHECK-NEXT: 1 3 1.00 dup v0.8h, w28 +# CHECK-NEXT: 1 2 0.50 mov b0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 mov d0, v0.d[1] +# CHECK-NEXT: 1 2 0.50 mov h0, v0.h[1] +# CHECK-NEXT: 1 2 0.50 mov s0, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.16b, v0.b[1] +# CHECK-NEXT: 1 2 0.50 dup v0.2d, v0.d[1] +# CHECK-NEXT: 1 2 0.50 dup v0.2s, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.4h, v0.h[1] +# CHECK-NEXT: 1 2 0.50 dup v0.4s, v0.s[1] +# CHECK-NEXT: 1 2 0.50 dup v0.8b, v0.b[1] +# CHECK-NEXT: 1 2 0.50 dup v0.8h, v0.h[1] # CHECK-NEXT: 1 2 0.50 eor v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 ext v0.16b, v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 fabd d29, d24, d20 # CHECK-NEXT: 1 2 0.50 fabd s29, s24, s20 +# CHECK-NEXT: 1 2 0.50 fabd h27, h20, h17 +# CHECK-NEXT: 1 2 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: 1 2 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fabs h25, h7 # CHECK-NEXT: 1 2 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fabs v0.4h, v0.4h @@ -1158,39 +130,70 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 facge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facge s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facge h24, h26, h29 +# CHECK-NEXT: 1 2 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: 1 2 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: 1 2 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 facgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facgt s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facgt h0, h4, h10 # CHECK-NEXT: 1 2 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: 1 2 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: 1 2 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 faddp h10, v19.2h +# CHECK-NEXT: 1 3 0.50 faddp d11, v28.2d # CHECK-NEXT: 1 3 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 faddp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: 1 2 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: 1 2 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: 1 2 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h1, h16, h12 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: 1 2 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: 1 2 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: 1 2 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: 1 2 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: 1 3 1.00 fcvtas d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtas s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtas h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtas v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtas v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtas v0.4h, v0.4h @@ -1198,6 +201,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtas v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtau d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtau s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtau h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtau v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtau v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtau v0.4h, v0.4h @@ -1209,6 +213,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 fcvtl2 v0.4s, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtms d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtms s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtms h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtms v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtms v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtms v0.4h, v0.4h @@ -1216,6 +221,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtms v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtmu d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtmu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtmu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtmu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtmu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtmu v0.4h, v0.4h @@ -1227,6 +233,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 fcvtn2 v0.8h, v0.4s # CHECK-NEXT: 1 3 1.00 fcvtns d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtns s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtns h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtns v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtns v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtns v0.4h, v0.4h @@ -1234,6 +241,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtns v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtnu d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtnu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtnu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtnu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtnu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtnu v0.4h, v0.4h @@ -1241,6 +249,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtnu v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtps d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtps s22, s13 +# CHECK-NEXT: 1 2 0.50 fcvtps h22, h13 # CHECK-NEXT: 1 3 1.00 fcvtps v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtps v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtps v0.4h, v0.4h @@ -1248,6 +257,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 6 4.00 fcvtps v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtpu d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtpu s12, s13 +# CHECK-NEXT: 1 2 0.50 fcvtpu h12, h13 # CHECK-NEXT: 1 3 1.00 fcvtpu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtpu v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 fcvtpu v0.4h, v0.4h @@ -1260,75 +270,132 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtzs d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtzs s12, s13 # CHECK-NEXT: 1 3 1.00 fcvtzs s21, s12, #1 +# CHECK-NEXT: 1 2 0.50 fcvtzs h21, h14 +# CHECK-NEXT: 1 2 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 2 4 2.00 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: 1 3 1.00 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzu d21, d14 # CHECK-NEXT: 1 3 1.00 fcvtzu s12, s13 # CHECK-NEXT: 1 3 1.00 fcvtzu s21, s12, #1 +# CHECK-NEXT: 1 2 0.50 fcvtzu h12, h13 +# CHECK-NEXT: 1 2 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 2 4 2.00 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fcvtzu v27.8h, v6.8h, #11 +# CHECK-NEXT: 2 13 2.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: 2 8 2.00 fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 4 8 4.00 fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 4 10 4.00 fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 8 12 8.00 fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmax v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: 1 3 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: 1 3 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 1.00 fmaxnmv h0, v13.4h +# CHECK-NEXT: 3 6 1.50 fmaxnmv h12, v11.8h +# CHECK-NEXT: 2 4 1.00 fmaxnmv s28, v31.4s # CHECK-NEXT: 1 3 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: 1 3 0.50 fmaxp s6, v2.2s +# CHECK-NEXT: 2 4 1.00 fmaxv h0, v0.4h +# CHECK-NEXT: 3 6 1.50 fmaxv h0, v0.8h +# CHECK-NEXT: 2 4 1.00 fmaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmin v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: 1 3 0.50 fminnmp d15, v8.2d # CHECK-NEXT: 1 3 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 1.00 fminnmv h19, v25.4h +# CHECK-NEXT: 3 6 1.50 fminnmv h23, v17.8h +# CHECK-NEXT: 2 4 1.00 fminnmv s29, v17.4s # CHECK-NEXT: 1 3 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fminp h7, v10.2h +# CHECK-NEXT: 1 3 0.50 fminp s17, v7.2s +# CHECK-NEXT: 2 4 1.00 fminv h3, v30.4h +# CHECK-NEXT: 3 6 1.50 fminv h29, v12.8h +# CHECK-NEXT: 2 4 1.00 fminv s16, v19.4s # CHECK-NEXT: 1 4 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: 1 4 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmla v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: 1 4 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: 1 4 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: 1 4 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: 1 4 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: 1 4 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmls v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: 1 4 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: 1 4 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: 1 2 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: 1 3 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: 1 3 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: 1 3 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: 1 3 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: 1 3 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: 1 3 0.50 fmul h28, h14, h3 # CHECK-NEXT: 1 3 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: 1 3 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: 1 3 0.50 fmulx d23, d11, d1 # CHECK-NEXT: 1 3 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: 1 2 0.50 fmulx h20, h25, h0 # CHECK-NEXT: 1 3 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: 1 3 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: 1 3 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: 1 2 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 frecpe h20, h8 # CHECK-NEXT: 1 3 1.00 frecpe d13, d13 # CHECK-NEXT: 1 3 1.00 frecpe s19, s14 # CHECK-NEXT: 1 3 1.00 frecpe v0.2d, v0.2d @@ -1336,9 +403,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frecpe v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frecpe v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 frecps h29, h19, h8 +# CHECK-NEXT: 1 3 1.00 frecpx h18, h11 +# CHECK-NEXT: 1 4 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: 1 4 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 frecps d22, d30, d21 # CHECK-NEXT: 1 4 0.50 frecps s21, s16, s13 +# CHECK-NEXT: 1 4 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: 1 3 1.00 frecpx d16, d19 # CHECK-NEXT: 1 3 1.00 frecpx s18, s10 # CHECK-NEXT: 1 3 1.00 frinta v0.2d, v0.2d @@ -1376,13 +447,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frintz v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frintz v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 frsqrte h23, h26 # CHECK-NEXT: 1 3 1.00 frsqrte d21, d12 # CHECK-NEXT: 1 3 1.00 frsqrte s22, s13 # CHECK-NEXT: 1 3 1.00 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 frsqrte v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 frsqrte v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: 4 6 4.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: 1 4 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: 1 4 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -1391,52 +466,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 8 4.00 fsqrt v0.4h, v0.4h # CHECK-NEXT: 4 10 4.00 fsqrt v0.4s, v0.4s # CHECK-NEXT: 8 12 8.00 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: 1 2 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 6 0.33 * ld1 { v0.16b }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: 3 6 1.00 * ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: 4 7 1.33 * ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: 1 6 0.33 * ld1 { v24.8h }, [x27] +# CHECK-NEXT: 2 6 0.67 * ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 3 6 1.00 * ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: 4 7 1.33 * ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.4s }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: 4 7 1.33 * ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: 4 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.2d }, [x28] +# CHECK-NEXT: 2 6 0.67 * ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: 3 6 1.00 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: 4 6 1.00 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: 2 6 0.67 * ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: 3 6 1.00 * ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: 4 7 1.33 * ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: 2 6 0.67 * ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: 3 6 1.00 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: 4 7 1.33 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: 3 6 0.67 * ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 7 1.33 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 8 0.50 * ld1 { v0.b }[7], [x0] +# CHECK-NEXT: 3 8 0.50 * ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: 2 8 0.50 * ld1 { v18.h }[3], [x1] +# CHECK-NEXT: 2 8 0.50 * ld1 { v0.s }[1], [x15] +# CHECK-NEXT: 3 8 0.50 * ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: 2 8 0.50 * ld1 { v11.d }[0], [x13] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 8 0.50 * ld1 { v0.b }[9], [x0] # CHECK-NEXT: 3 8 0.50 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 1 6 0.33 * ld1r { v0.16b }, [x0] +# CHECK-NEXT: 2 6 0.33 * ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: 1 6 0.33 * ld1r { v0.4s }, [x15] +# CHECK-NEXT: 1 6 0.33 * ld1r { v3.1d }, [x15] +# CHECK-NEXT: 2 6 0.33 * ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: 1 6 0.33 * ld1r { v18.2d }, [x0] +# CHECK-NEXT: 1 6 0.33 * ld1r { v8.8b }, [x23] +# CHECK-NEXT: 1 6 0.33 * ld1r { v28.4h }, [x9] +# CHECK-NEXT: 1 6 0.33 * ld1r { v3.8h }, [x16] +# CHECK-NEXT: 1 6 0.33 * ld1r { v10.2s }, [x20] +# CHECK-NEXT: 2 8 0.50 * ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: 3 8 0.67 * ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: 2 8 0.50 * ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: 3 8 0.67 * ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: 3 8 0.67 * ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: 2 8 0.50 * ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: 2 8 0.50 * ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: 2 8 0.50 * ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: 3 8 0.67 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 2 8 0.50 * ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: 3 8 0.50 * ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: 2 6 0.33 * ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: 1 6 0.33 * ld1r { v0.8h }, [x15] # CHECK-NEXT: 2 6 0.33 * ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: 4 8 0.67 * ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 2 8 0.50 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 2 8 0.50 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 3 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: 3 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: 2 6 0.67 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: 3 6 0.67 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 2 6 0.67 * ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: 2 6 0.67 * ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: 2 6 0.67 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: 3 6 0.67 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 2 6 0.67 * ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: 2 6 0.67 * ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: 6 8 1.50 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: 6 10 1.50 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: 2 6 0.67 * ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: 3 6 0.67 * ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: 2 6 0.67 * ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: 3 6 0.67 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 6 8 1.50 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 7 10 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 6 10 1.50 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: 6 8 1.50 * ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: 6 10 1.50 * ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: 6 8 1.50 * ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: 6 8 1.50 * ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: 6 10 1.50 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: 7 10 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 6 8 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 7 8 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 6 8 1.50 * ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: 3 6 1.00 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: 3 6 1.00 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 4 6 1.00 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 3 6 1.00 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: 3 6 1.00 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: 3 6 1.00 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 3 6 1.00 * ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: 4 6 1.00 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 3 6 1.00 * ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: 3 6 1.00 * ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: 8 8 2.00 * ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: 8 8 2.00 * ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: 8 8 2.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: 8 8 2.00 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: 8 8 2.00 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: 3 6 1.00 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: 4 6 1.00 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 8 8 2.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 9 8 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 8 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 8 8 2.00 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: 8 8 2.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: 8 8 2.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: 9 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 9 8 2.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 8 8 2.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: 7 8 1.50 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: 7 8 1.50 * ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: 7 8 1.50 * ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: 8 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 7 8 1.50 * ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: 7 8 1.50 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: 8 8 1.50 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 7 8 1.50 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: 8 8 1.50 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 9 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: 7 8 1.50 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 8 8 1.50 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 4 1.00 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: 1 4 1.00 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: 1 4 1.00 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: 1 4 1.00 mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: 1 2 0.50 mov b0, v0.b[15] # CHECK-NEXT: 1 2 0.50 mov d6, v0.d[1] # CHECK-NEXT: 1 2 0.50 mov h2, v0.h[5] # CHECK-NEXT: 1 2 0.50 mov s17, v0.s[2] +# CHECK-NEXT: 1 2 0.50 mov w8, v8.s[0] +# CHECK-NEXT: 1 2 0.50 mov x30, v18.d[0] # CHECK-NEXT: 1 2 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: 1 2 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: 1 2 0.50 mov v2.s[2], v0.s[2] @@ -1449,11 +635,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 0 0.20 mov v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: 1 2 0.50 movi v0.16b, #31 +# CHECK-NEXT: 1 2 0.50 movi v14.8h, #174 +# CHECK-NEXT: 1 2 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: 1 2 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: 1 2 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: 1 2 0.50 movi v19.2s, #226 +# CHECK-NEXT: 1 2 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: 1 2 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: 1 2 0.50 movi v0.8b, #255 # CHECK-NEXT: 1 4 1.00 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: 1 4 1.00 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: 1 4 1.00 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: 1 4 1.00 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: 1 4 1.00 mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: 1 4 1.00 mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: 1 2 0.50 mvni v9.4h, #237 +# CHECK-NEXT: 1 2 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: 1 2 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: 1 2 0.50 mvni v0.2s, #0 # CHECK-NEXT: 1 2 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: 1 2 0.50 neg d29, d24 @@ -1467,8 +666,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: 1 0 0.20 mov v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orr v9.4h, #18 # CHECK-NEXT: 1 2 0.50 orr v0.8h, #31 +# CHECK-NEXT: 1 2 0.50 orr v4.4s, #0 # CHECK-NEXT: 1 2 1.00 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 1.00 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 1.00 pmull v0.8h, v0.8b, v0.8b @@ -1513,6 +715,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -1537,12 +740,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 saddlp v0.4h, v0.8b # CHECK-NEXT: 1 2 0.50 saddlp v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddlp v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 saddlv d0, v0.4s +# CHECK-NEXT: 1 3 1.00 saddlv s0, v0.4h +# CHECK-NEXT: 2 5 1.00 saddlv s0, v0.8h +# CHECK-NEXT: 2 5 1.00 saddlv h0, v0.8b +# CHECK-NEXT: 2 6 2.00 saddlv h0, v0.16b # CHECK-NEXT: 1 2 0.50 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.50 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.50 saddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: 1 2 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 2 0.50 scvtf h4, h8, #9 +# CHECK-NEXT: 1 2 0.50 scvtf h5, h14 # CHECK-NEXT: 1 3 1.00 scvtf d21, d12 # CHECK-NEXT: 1 3 1.00 scvtf d21, d12, #64 # CHECK-NEXT: 1 3 1.00 scvtf s22, s13 @@ -1554,22 +764,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 scvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 scvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 2.00 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: 4 6 4.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 scvtf v4.8h, v8.8h, #10 +# CHECK-NEXT: 1 3 0.50 sdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 sdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 sdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: 1 2 1.00 shl d7, d10, #12 +# CHECK-NEXT: 1 2 1.00 shl v23.8b, v18.8b, #6 # CHECK-NEXT: 1 2 1.00 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 1.00 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 2 1.00 shl v0.8h, v23.8h, #10 # CHECK-NEXT: 1 2 1.00 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: 1 2 1.00 shll v0.2d, v0.2s, #32 # CHECK-NEXT: 1 2 1.00 shll v0.4s, v0.4h, #16 # CHECK-NEXT: 1 2 1.00 shll v0.8h, v0.8b, #8 # CHECK-NEXT: 1 2 1.00 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: 1 2 1.00 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: 1 2 1.00 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: 1 2 1.00 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: 1 2 1.00 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: 1 2 1.00 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: 1 2 1.00 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: 1 2 1.00 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: 1 2 1.00 shll2 v0.8h, v0.16b, #8 @@ -1581,6 +794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: 1 2 1.00 sli d10, d14, #12 # CHECK-NEXT: 1 2 1.00 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 sli v0.2d, v0.2d, #3 @@ -1592,32 +806,56 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: 1 2 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: 1 2 0.50 smaxp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 2 5 1.00 smaxv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 smaxv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 smaxv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 smaxv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 smaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 smin v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 smin v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 2 5 1.00 sminv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 sminv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 sminv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 sminv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 sminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: 1 4 1.00 smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: 1 4 1.00 smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: 1 4 1.00 smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 4 1.00 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: 1 4 1.00 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: 1 4 1.00 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: 1 4 1.00 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqabs b19, b14 # CHECK-NEXT: 1 2 0.50 sqabs d18, d12 @@ -1631,6 +869,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: 1 2 0.50 sqadd h12, h18, h10 # CHECK-NEXT: 1 2 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 sqdmlal d19, s24, s12 @@ -1638,17 +877,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlal s17, h27, h12 # CHECK-NEXT: 1 4 1.00 sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: 1 4 1.00 sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: 1 4 1.00 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: 1 4 1.00 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: 1 4 1.00 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: 1 4 1.00 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: 1 4 1.00 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: 1 4 1.00 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: 1 4 1.00 sqdmlsl d12, s23, s13 # CHECK-NEXT: 1 4 1.00 sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: 1 4 1.00 sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlsl s14, h12, h25 # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: 1 4 1.00 sqdmulh h10, h11, h12 # CHECK-NEXT: 1 4 1.00 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmulh s15, s14, v0.s[1] @@ -1674,6 +930,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 sqneg v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqneg v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlah h0, h1, h2 +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlah s0, s1, s2 +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: 1 4 1.00 sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: 1 4 1.00 sqrdmlsh h0, h1, h2 +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: 1 4 1.00 sqrdmlsh s0, s1, s2 +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: 1 4 1.00 sqrdmlsh v0.4s, v1.4s, v2.4s # CHECK-NEXT: 1 4 1.00 sqrdmulh h10, h11, h12 # CHECK-NEXT: 1 4 1.00 sqrdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqrdmulh s15, s14, v0.s[1] @@ -1685,6 +965,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 1.00 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 sqshl s17, s4, s23 +# CHECK-NEXT: 1 2 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: 1 2 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: 1 4 1.00 sqrshrn b10, h13, #2 # CHECK-NEXT: 1 4 1.00 sqrshrn h15, s10, #6 # CHECK-NEXT: 1 4 1.00 sqrshrn s15, d12, #9 @@ -1710,6 +993,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqshl h3, h4, h15 # CHECK-NEXT: 1 4 1.00 sqshl s14, s17, #22 # CHECK-NEXT: 1 4 1.00 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: 1 4 1.00 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: 1 4 1.00 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 1.00 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 1.00 sqshl v0.2s, v0.2s, v0.2s @@ -1806,8 +1090,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 1.00 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 1.00 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 1.00 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: 1 2 1.00 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: 1 2 1.00 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: 1 2 1.00 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: 1 2 1.00 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: 1 2 1.00 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: 1 2 1.00 sshr d15, d16, #12 # CHECK-NEXT: 1 2 1.00 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 sshr v0.2d, v0.2d, #3 @@ -1836,30 +1124,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 2 0.50 * st1 { v18.8b }, [x15] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: 4 2 1.00 * st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: 4 2 1.00 * st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: 2 2 0.50 * st1 { v19.4h }, [x7] +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: 4 2 1.00 * st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: 4 2 1.00 * st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: 2 2 0.50 * st1 { v27.8h }, [x17] +# CHECK-NEXT: 4 2 1.00 * st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: 4 2 1.00 * st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v25.2s }, [x6] +# CHECK-NEXT: 2 2 0.50 * st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: 4 2 1.00 * st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4s }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: 4 2 1.00 * st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: 2 2 0.50 * st1 { v20.1d }, [x10] +# CHECK-NEXT: 2 2 0.50 * st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: 4 2 1.00 * st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: 2 2 0.50 * st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: 5 2 1.00 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 4 2 1.00 * st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: 4 2 1.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 2 2 0.50 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 3 2 0.50 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 4 2 1.00 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 2 0.50 * st1 { v1.b }[5], [x1] +# CHECK-NEXT: 2 2 0.50 * st1 { v0.h }[2], [x1] +# CHECK-NEXT: 2 2 0.50 * st1 { v31.s }[1], [x16] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 2 0.50 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 2 0.50 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 3 2 0.50 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 3 2 0.50 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 2 2 0.50 * st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 2 2 0.50 * st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: 2 2 0.50 * st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: 2 2 0.50 * st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: 2 2 0.50 * st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: 2 2 0.50 * st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: 2 2 0.50 * st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: 2 2 0.50 * st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: 2 2 0.50 * st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: 2 2 0.50 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 3 2 0.50 * st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: 2 2 0.50 * st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: 4 4 1.00 * st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: 6 4 1.50 * st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: 4 4 1.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 7 4 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 6 4 1.50 * st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: 4 4 1.00 * st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: 6 4 1.50 * st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: 6 2 1.50 * st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: 4 2 1.00 * st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: 4 2 1.00 * st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: 5 2 1.00 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 4 2 1.00 * st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: 4 2 1.00 * st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: 4 4 1.00 * st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: 8 4 2.00 * st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: 4 4 1.00 * st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: 8 4 2.00 * st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: 4 4 1.00 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 9 4 2.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 8 4 2.00 * st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: 4 2 1.00 * st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: 4 2 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 4 2 1.00 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: 4 2 1.00 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: 4 2 1.00 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: 4 2 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] # CHECK-NEXT: 5 2 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +# CHECK-NEXT: 5 2 1.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.50 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.50 sub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: 1 2 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: 1 2 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: 1 2 0.50 suqadd b19, b14 # CHECK-NEXT: 1 2 0.50 suqadd d18, d22 # CHECK-NEXT: 1 2 0.50 suqadd h20, h15 @@ -1902,6 +1256,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: 1 4 1.00 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 1.00 uabal v0.8h, v0.8b, v0.8b @@ -1909,6 +1264,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: 1 2 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -1933,14 +1289,23 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 uaddlp v0.4h, v0.8b # CHECK-NEXT: 1 2 0.50 uaddlp v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddlp v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 uaddlv d0, v0.4s +# CHECK-NEXT: 1 3 1.00 uaddlv s0, v0.4h +# CHECK-NEXT: 2 5 1.00 uaddlv s0, v0.8h +# CHECK-NEXT: 2 5 1.00 uaddlv h0, v0.8b +# CHECK-NEXT: 2 6 2.00 uaddlv h0, v0.16b # CHECK-NEXT: 1 2 0.50 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: 1 2 0.50 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: 1 2 0.50 uaddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: 1 2 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 ucvtf h17, x12 +# CHECK-NEXT: 1 2 0.50 ucvtf h22, h16, #11 +# CHECK-NEXT: 1 2 0.50 ucvtf h7, h21 # CHECK-NEXT: 1 3 1.00 ucvtf d21, d14 # CHECK-NEXT: 1 3 1.00 ucvtf d21, d14, #64 +# CHECK-NEXT: 1 3 1.00 ucvtf s8, x0 # CHECK-NEXT: 1 3 1.00 ucvtf s22, s13 # CHECK-NEXT: 1 3 1.00 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 1.00 ucvtf v0.2d, v0.2d @@ -1950,9 +1315,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 2.00 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: 4 6 4.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 ucvtf v22.8h, v20.8h, #10 +# CHECK-NEXT: 1 3 0.50 udot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 udot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 udot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: 1 2 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umax v0.4s, v0.4s, v0.4s @@ -1960,37 +1332,69 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 2 5 1.00 umaxv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 umaxv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 umaxv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 umaxv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 umaxv s0, v0.4s # CHECK-NEXT: 1 2 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: 1 2 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: 1 2 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uminp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 2 5 1.00 uminv b0, v0.8b +# CHECK-NEXT: 2 6 2.00 uminv b0, v0.16b +# CHECK-NEXT: 1 3 1.00 uminv h0, v0.4h +# CHECK-NEXT: 2 5 1.00 uminv h0, v0.8h +# CHECK-NEXT: 1 3 1.00 uminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: 1 4 1.00 umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: 1 4 1.00 umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: 1 4 1.00 umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: 1 4 1.00 umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: 1 4 1.00 umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 umov w6, v22.b[0] +# CHECK-NEXT: 2 2 1.00 umov w0, v0.b[1] +# CHECK-NEXT: 1 2 0.50 umov w10, v25.h[0] +# CHECK-NEXT: 2 2 1.00 umov w0, v0.h[1] +# CHECK-NEXT: 2 2 1.00 mov w0, v0.s[1] +# CHECK-NEXT: 2 2 1.00 mov x0, v0.d[1] # CHECK-NEXT: 1 4 1.00 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: 1 4 1.00 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: 1 4 1.00 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: 1 4 1.00 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: 1 4 1.00 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: 1 2 0.50 uqadd s0, s24, s30 # CHECK-NEXT: 1 2 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: 1 4 1.00 uqrshl b11, b20, b30 # CHECK-NEXT: 1 4 1.00 uqrshl s23, s20, s16 +# CHECK-NEXT: 1 4 1.00 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: 1 4 1.00 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 1.00 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqrshrn b10, h12, #5 # CHECK-NEXT: 1 4 1.00 uqrshrn h12, s10, #14 @@ -2013,6 +1417,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 1.00 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 1.00 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 4 1.00 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: 1 4 1.00 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 1.00 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 uqshl v0.8b, v0.8b, #3 @@ -2027,8 +1432,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 1.00 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 uqsub s16, s21, s6 # CHECK-NEXT: 1 2 0.50 uqsub d16, d16, d16 # CHECK-NEXT: 1 2 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: 1 4 1.00 uqxtn b18, h18 # CHECK-NEXT: 1 4 1.00 uqxtn h20, s17 # CHECK-NEXT: 1 4 1.00 uqxtn s19, d14 @@ -2043,7 +1450,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: 1 4 1.00 urshl d8, d7, d4 +# CHECK-NEXT: 1 4 1.00 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: 1 4 1.00 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 1.00 urshl v0.4s, v0.4s, v0.4s @@ -2067,10 +1476,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 1.00 ursra v0.8h, v0.8h, #3 # CHECK-NEXT: 1 2 1.00 ushl d0, d0, d0 +# CHECK-NEXT: 1 2 1.00 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 1.00 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 1.00 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 1.00 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: 1 2 1.00 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: 1 2 1.00 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: 1 2 1.00 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: 1 2 1.00 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: 1 2 1.00 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: 1 2 1.00 ushr d10, d17, #18 # CHECK-NEXT: 1 2 1.00 ushr v0.16b, v0.16b, #3 @@ -2080,6 +1494,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 1.00 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 1.00 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 1.00 ushr v0.8h, v0.8h, #3 +# CHECK-NEXT: 1 2 0.50 U smov w15, v22.b[0] +# CHECK-NEXT: 1 2 0.50 U smov w26, v27.h[0] +# CHECK-NEXT: 1 2 0.50 U smov x21, v0.b[0] +# CHECK-NEXT: 1 2 0.50 U smov x9, v27.h[0] +# CHECK-NEXT: 1 2 0.50 U smov x15, v3.s[0] +# CHECK-NEXT: 2 2 1.00 smov w0, v0.b[1] +# CHECK-NEXT: 2 2 1.00 smov w0, v0.h[1] +# CHECK-NEXT: 2 2 1.00 smov x0, v0.b[1] +# CHECK-NEXT: 2 2 1.00 smov x0, v0.h[1] +# CHECK-NEXT: 2 2 1.00 smov x0, v0.s[1] # CHECK-NEXT: 1 2 0.50 usqadd b19, b14 # CHECK-NEXT: 1 2 0.50 usqadd d18, d22 # CHECK-NEXT: 1 2 0.50 usqadd h20, h15 @@ -2163,7 +1587,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] -# CHECK-NEXT: - - - - 33.00 51.50 51.50 18.75 7.75 7.75 7.75 663.50 570.50 +# CHECK-NEXT: - - - - 118.67 190.67 190.67 25.25 12.25 12.25 12.25 993.50 847.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] Instructions: @@ -2183,14 +1607,31 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 addp d1, v14.2d +# CHECK-NEXT: - - - - - - - - - - - - 1.00 addv s0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - 1.00 addv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 addv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 addv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 addv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aesd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aese v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aesimc v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 and v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bic v24.2s, #70 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cls v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cls v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cls v0.4h, v0.4h @@ -2203,28 +1644,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 clz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 clz v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhi d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhs d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmle d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmlt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmtst d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: - - - - - - - 1.00 - - - - - dup v0.16b, w28 @@ -2234,12 +1684,26 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 1.00 - - - - - dup v0.4s, w28 # CHECK-NEXT: - - - - - - - 1.00 - - - - - dup v0.8b, w28 # CHECK-NEXT: - - - - - - - 1.00 - - - - - dup v0.8h, w28 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov b0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov d0, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov h0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov s0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.16b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.2d, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.2s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.4h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.4s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.8b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 dup v0.8h, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 eor v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ext v0.16b, v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd d29, d24, d20 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd s29, s24, s20 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd h27, h20, h17 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs h25, h7 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.4h, v0.4h @@ -2247,39 +1711,70 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge h24, h26, h29 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt h0, h4, h10 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp h10, v19.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp d11, v28.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge h1, h16, h12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtas d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtas s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtas h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtas v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtas v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtas v0.4h, v0.4h @@ -2287,6 +1782,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtas v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtau d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtau s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtau h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtau v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtau v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtau v0.4h, v0.4h @@ -2298,6 +1794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtl2 v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtms d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtms s22, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtms h22, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtms v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtms v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtms v0.4h, v0.4h @@ -2305,6 +1802,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtms v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtmu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtmu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtmu h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtmu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtmu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtmu v0.4h, v0.4h @@ -2316,6 +1814,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtn2 v0.8h, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtns d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtns s22, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtns h22, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtns v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtns v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtns v0.4h, v0.4h @@ -2323,6 +1822,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtns v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtnu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtnu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtnu h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtnu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtnu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtnu v0.4h, v0.4h @@ -2330,6 +1830,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtnu v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtps d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtps s22, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtps h22, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtps v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtps v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtps v0.4h, v0.4h @@ -2337,6 +1838,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtps v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtpu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtpu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtpu h12, h13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtpu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtpu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtpu v0.4h, v0.4h @@ -2349,75 +1851,132 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs s12, s13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs h21, h14 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs h21, h12, #1 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu s12, s13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu h21, h12, #1 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 1.00 - fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 2.00 - fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - 4.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fcvtzu v27.8h, v6.8h, #11 +# CHECK-NEXT: - - - - - - - - - - - 2.00 - fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 2.00 - fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 4.00 - fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 4.00 - fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 8.00 - fdiv v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmax v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmax v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fmaxnmv h0, v13.4h +# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 fmaxnmv h12, v11.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fmaxnmv s28, v31.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmaxp s6, v2.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fmaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 fmaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fmaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmin v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmin v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp d15, v8.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fminnmv h19, v25.4h +# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 fminnmv h23, v17.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fminnmv s29, v17.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp h7, v10.2h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fminp s17, v7.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fminv h3, v30.4h +# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 fminv h29, v12.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 fminv s16, v19.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul h28, h14, h3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx d23, d11, d1 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx h20, h25, h0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe h20, h8 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe s19, s14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpe v0.2d, v0.2d @@ -2425,9 +1984,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frecpe v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 4.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps h29, h19, h8 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpx h18, h11 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps s21, s16, s13 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpx d16, d19 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frecpx s18, s10 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frinta v0.2d, v0.2d @@ -2465,13 +2028,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frintz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 4.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte h23, h26 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte s22, s13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - 1.00 - frsqrte v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 2.00 - frsqrte v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: - - - - - - - - - - - 4.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -2480,52 +2047,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fsqrt v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 4.00 - fsqrt v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 8.00 - fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v24.8h }, [x27] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v3.4s }, [x4] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1 { v3.2d }, [x28] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v0.b }[7], [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v18.h }[3], [x1] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v0.s }[1], [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v11.d }[0], [x13] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld1 { v0.b }[9], [x0] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v0.16b }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v0.4s }, [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v3.1d }, [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v18.2d }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v8.8b }, [x23] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v28.4h }, [x9] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v3.8h }, [x16] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v10.2s }, [x20] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - ld1r { v0.8h }, [x15] # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.50 1.50 ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 2.00 2.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 2.00 2.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 2.00 2.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 1.50 1.50 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 1.50 1.50 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - 1.50 1.50 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 1.50 1.50 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - - - - 1.00 - mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov b0, v0.b[15] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov d6, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov h2, v0.h[5] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov s17, v0.s[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov w8, v8.s[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov x30, v18.d[0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mov v2.s[2], v0.s[2] @@ -2538,11 +2216,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - mov v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.16b, #31 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v14.8h, #174 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v19.2s, #226 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 movi v0.8b, #255 # CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v9.4h, #237 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 neg d29, d24 @@ -2556,8 +2247,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: - - - - - - - - - - - - - mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orr v9.4h, #18 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orr v0.8h, #31 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 orr v4.4s, #0 # CHECK-NEXT: - - - - - - - - - - - 1.00 - pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - pmull v0.8h, v0.8b, v0.8b @@ -2602,6 +2296,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -2626,12 +2321,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddlp v0.4h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddlp v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 saddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - 1.00 saddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 saddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 saddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 saddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf h4, h8, #9 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf h5, h14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - scvtf d21, d12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - scvtf d21, d12, #64 # CHECK-NEXT: - - - - - - - - - - - 1.00 - scvtf s22, s13 @@ -2643,22 +2345,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 2.00 - scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - 2.00 - scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: - - - - - - - - - - - 4.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 scvtf v4.8h, v8.8h, #10 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v23.8b, v18.8b, #6 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.8h, v23.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.2d, v0.2s, #32 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.4s, v0.4h, #16 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.8h, v0.8b, #8 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: - - - - - - - - - - - - 1.00 shll2 v0.8h, v0.16b, #8 @@ -2670,6 +2375,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sli v0.2d, v0.2d, #3 @@ -2681,32 +2387,56 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smaxp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 smaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 smaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 smaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 smaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 smaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smin v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smin v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smin v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sminp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sminp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 sminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 sminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sminv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 sminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - smlsl2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs b19, b14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs d18, d12 @@ -2720,6 +2450,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd h12, h18, h10 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal d19, s24, s12 @@ -2727,17 +2458,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal s17, h27, h12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl d12, s23, s13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl s14, h12, h25 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqdmulh s15, s14, v0.s[1] @@ -2763,6 +2511,30 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqneg v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - 1.00 - sqrdmulh s15, s14, v0.s[1] @@ -2774,6 +2546,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl s17, s4, s23 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshrn b10, h13, #2 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshrn h15, s10, #6 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqrshrn s15, d12, #9 @@ -2799,6 +2574,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl h3, h4, h15 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl s14, s17, #22 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sqshl v0.2s, v0.2s, v0.2s @@ -2895,8 +2671,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 sshr v0.2d, v0.2d, #3 @@ -2925,30 +2705,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v18.8b }, [x15] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v19.4h }, [x7] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v27.8h }, [x17] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v25.2s }, [x6] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v22.4s }, [x19] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v20.1d }, [x10] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v8.2d }, [x15] +# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v1.b }[5], [x1] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.h }[2], [x1] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v31.s }[1], [x16] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - 1.50 1.50 0.25 0.25 0.25 0.25 1.50 1.50 st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - 2.00 2.00 0.25 0.25 0.25 0.25 2.00 2.00 st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] # CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 +# CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 suqadd h20, h15 @@ -2991,6 +2837,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal v0.8h, v0.8b, v0.8b @@ -2998,6 +2845,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -3022,14 +2870,23 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddlp v0.4h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddlp v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uaddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uaddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uaddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 uaddlv h0, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw v0.2d, v0.2d, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw v0.4s, v0.4s, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw v0.8h, v0.8h, v0.8b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - 1.00 - - - - - ucvtf h17, x12 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf h22, h16, #11 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf h7, h21 # CHECK-NEXT: - - - - - - - - - - - 1.00 - ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - - - - 1.00 - ucvtf d21, d14, #64 +# CHECK-NEXT: - - - - - - - 1.00 - - - - - ucvtf s8, x0 # CHECK-NEXT: - - - - - - - - - - - 1.00 - ucvtf s22, s13 # CHECK-NEXT: - - - - - - - - - - - 1.00 - ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - 1.00 - ucvtf v0.2d, v0.2d @@ -3039,9 +2896,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 2.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 2.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 2.00 - ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - 2.00 - ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: - - - - - - - - - - - 4.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 ucvtf v22.8h, v20.8h, #10 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umax v0.4s, v0.4s, v0.4s @@ -3049,37 +2913,69 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umaxp v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umaxp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 umaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 umaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 umaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 umaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 umaxv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uminp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - 2.00 uminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uminv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 1.50 uminv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umlsl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umov w6, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 umov w10, v25.h[0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 umov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 mov w0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - 1.00 - umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 1.00 - umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd s0, s24, s30 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl b11, b20, b30 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshrn b10, h12, #5 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqrshrn h12, s10, #14 @@ -3102,6 +2998,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshl v0.8b, v0.8b, #3 @@ -3116,8 +3013,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub s16, s21, s6 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub d16, d16, d16 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqxtn b18, h18 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqxtn h20, s17 # CHECK-NEXT: - - - - - - - - - - - - 1.00 uqxtn s19, d14 @@ -3132,7 +3031,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl d8, d7, d4 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - 1.00 urshl v0.4s, v0.4s, v0.4s @@ -3156,10 +3057,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ursra v0.8h, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl d0, d0, d0 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.16b, v0.16b, #3 @@ -3169,6 +3075,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - 1.00 ushr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov w15, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov w26, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x21, v0.b[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x9, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 smov x15, v3.s[0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 smov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 smov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 smov x0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 smov x0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 smov x0, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 usqadd h20, h15 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-bf16-instructions.s new file mode 100644 index 0000000000000..4b49d72b5d2e5 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-bf16-instructions.s @@ -0,0 +1,61 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -instruction-tables < %p/Inputs/bf16-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 +# CHECK-NEXT: 1 4 0.50 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 1 4 0.50 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 4 0.25 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: 1 4 0.25 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.25 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 bfmmla v0.4s, v0.8h, v0.8h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V1UnitB +# CHECK-NEXT: [0.1] - V1UnitB +# CHECK-NEXT: [1.0] - V1UnitD +# CHECK-NEXT: [1.1] - V1UnitD +# CHECK-NEXT: [2.0] - V1UnitFlg +# CHECK-NEXT: [2.1] - V1UnitFlg +# CHECK-NEXT: [2.2] - V1UnitFlg +# CHECK-NEXT: [3] - V1UnitL2 +# CHECK-NEXT: [4.0] - V1UnitL01 +# CHECK-NEXT: [4.1] - V1UnitL01 +# CHECK-NEXT: [5] - V1UnitM0 +# CHECK-NEXT: [6] - V1UnitM1 +# CHECK-NEXT: [7.0] - V1UnitS +# CHECK-NEXT: [7.1] - V1UnitS +# CHECK-NEXT: [8] - V1UnitV0 +# CHECK-NEXT: [9] - V1UnitV1 +# CHECK-NEXT: [10] - V1UnitV2 +# CHECK-NEXT: [11] - V1UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 2.00 3.50 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-complxnum-instructions.s new file mode 100644 index 0000000000000..9acba778ec50b --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-complxnum-instructions.s @@ -0,0 +1,47 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -instruction-tables < %p/Inputs/complxnum-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 4 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V1UnitB +# CHECK-NEXT: [0.1] - V1UnitB +# CHECK-NEXT: [1.0] - V1UnitD +# CHECK-NEXT: [1.1] - V1UnitD +# CHECK-NEXT: [2.0] - V1UnitFlg +# CHECK-NEXT: [2.1] - V1UnitFlg +# CHECK-NEXT: [2.2] - V1UnitFlg +# CHECK-NEXT: [3] - V1UnitL2 +# CHECK-NEXT: [4.0] - V1UnitL01 +# CHECK-NEXT: [4.1] - V1UnitL01 +# CHECK-NEXT: [5] - V1UnitM0 +# CHECK-NEXT: [6] - V1UnitM1 +# CHECK-NEXT: [7.0] - V1UnitS +# CHECK-NEXT: [7.1] - V1UnitS +# CHECK-NEXT: [8] - V1UnitV0 +# CHECK-NEXT: [9] - V1UnitV1 +# CHECK-NEXT: [10] - V1UnitV2 +# CHECK-NEXT: [11] - V1UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-fp16fml-instructions.s new file mode 100644 index 0000000000000..18eee106749ac --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-fp16fml-instructions.s @@ -0,0 +1,71 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -instruction-tables < %p/Inputs/fp16fml-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.25 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.25 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 5 0.25 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 5 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.25 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 5 0.25 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 2 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 5 0.25 fmlsl2 v0.4s, v0.4h, v0.4h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V1UnitB +# CHECK-NEXT: [0.1] - V1UnitB +# CHECK-NEXT: [1.0] - V1UnitD +# CHECK-NEXT: [1.1] - V1UnitD +# CHECK-NEXT: [2.0] - V1UnitFlg +# CHECK-NEXT: [2.1] - V1UnitFlg +# CHECK-NEXT: [2.2] - V1UnitFlg +# CHECK-NEXT: [3] - V1UnitL2 +# CHECK-NEXT: [4.0] - V1UnitL01 +# CHECK-NEXT: [4.1] - V1UnitL01 +# CHECK-NEXT: [5] - V1UnitM0 +# CHECK-NEXT: [6] - V1UnitM1 +# CHECK-NEXT: [7.0] - V1UnitS +# CHECK-NEXT: [7.1] - V1UnitS +# CHECK-NEXT: [8] - V1UnitV0 +# CHECK-NEXT: [9] - V1UnitV1 +# CHECK-NEXT: [10] - V1UnitV2 +# CHECK-NEXT: [11] - V1UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 4.00 4.00 4.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-i8mm-instructions.s new file mode 100644 index 0000000000000..638aa0146671f --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-i8mm-instructions.s @@ -0,0 +1,57 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -instruction-tables < %p/Inputs/i8mm-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.25 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V1UnitB +# CHECK-NEXT: [0.1] - V1UnitB +# CHECK-NEXT: [1.0] - V1UnitD +# CHECK-NEXT: [1.1] - V1UnitD +# CHECK-NEXT: [2.0] - V1UnitFlg +# CHECK-NEXT: [2.1] - V1UnitFlg +# CHECK-NEXT: [2.2] - V1UnitFlg +# CHECK-NEXT: [3] - V1UnitL2 +# CHECK-NEXT: [4.0] - V1UnitL01 +# CHECK-NEXT: [4.1] - V1UnitL01 +# CHECK-NEXT: [5] - V1UnitM0 +# CHECK-NEXT: [6] - V1UnitM1 +# CHECK-NEXT: [7.0] - V1UnitS +# CHECK-NEXT: [7.1] - V1UnitS +# CHECK-NEXT: [8] - V1UnitV0 +# CHECK-NEXT: [9] - V1UnitV1 +# CHECK-NEXT: [10] - V1UnitV2 +# CHECK-NEXT: [11] - V1UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] +# CHECK-NEXT: - - - - - - - - - - - - - - 2.25 2.25 2.25 2.25 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s index 36a03fa8fe501..72369cb94eef0 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-neon-instructions.s @@ -1,1575 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v7.2s, v1.2s, v2.2s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -addp d1, v14.2d -addv s0, v0.4s -addv h0, v0.4h -addv h0, v0.8h -addv b0, v0.8b -addv b0, v0.16b -aesd v0.16b, v0.16b -aese v0.16b, v0.16b -aesimc v0.16b, v0.16b -aesmc v0.16b, v0.16b -and v0.8b, v0.8b, v0.8b -bfcvt h0, s0 -bfcvtn v0.4h, v0.4s -bfcvtn2 v0.8h, v0.4s -bfdot v0.2s, v24.4h, v14.2h[2] -bfdot v0.2s, v0.4h, v0.4h -bfdot v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.h[3] -bfmlalt v0.4s, v0.8h, v0.8h -bfmlalt v0.4s, v0.8h, v0.h[3] -bfmmla v0.4s, v0.8h, v0.8h -bic v0.4h, #15, lsl #8 -bic v23.8h, #101 -bic v0.8b, v0.8b, v0.8b -bic v25.16b, v10.16b, v9.16b -bic v24.2s, #70 -bit v5.8b, v12.8b, v22.8b -bif v0.8b, v25.8b, v4.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -bsl v27.16b, v13.16b, v21.16b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq v9.8h, v16.8h, v24.8h -cmeq v14.4h, v18.4h, #0 -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge v22.8h, v16.8h, v3.8h -cmge v22.16b, v30.16b, #0 -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt v3.2d, v29.2d, v11.2d -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi v28.4h, v25.4h, v21.4h -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle v21.2s, v19.2s, #0 -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt v26.4h, v12.4h, #0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cmtst v13.2d, v13.2d, v13.2d -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -dup b0, v0.b[1] -dup d0, v0.d[1] -dup h0, v0.h[1] -dup s0, v0.s[1] -dup v0.16b, v0.b[1] -dup v0.2d, v0.d[1] -dup v0.2s, v0.s[1] -dup v0.4h, v0.h[1] -dup v0.4s, v0.s[1] -dup v0.8b, v0.b[1] -dup v0.8h, v0.h[1] -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd h27, h20, h17 -fabd v13.8h, v28.8h, v12.8h -fabd v0.4s, v0.4s, v0.4s -fabs h25, h7 -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge h24, h26, h29 -facge v25.4h, v16.4h, v11.4h -facge v19.2s, v24.2s, v5.2s -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt h0, h4, h10 -facgt v0.2d, v0.2d, v0.2d -facgt v22.8h, v14.8h, v31.8h -facgt v22.4s, v8.4s, v2.4s -fadd v0.4s, v0.4s, v0.4s -faddp h10, v19.2h -faddp d11, v28.2d -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -faddp v16.2d, v11.2d, v5.2d -fcadd v0.2s, v0.2s, v0.2s, 90 -fcadd v0.4s, v0.4s, v0.4s, 270 -fcmeq h30, h6, h1 -fcmeq h19, h23, #0.0 -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmeq v12.4s, v11.4s, v26.4s -fcmeq v18.2d, v17.2d, #0.0 -fcmge h10, h23, #0.0 -fcmge h1, h16, h12 -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v17.2d, v11.2d, v13.2d -fcmge v0.4s, v0.4s, v0.4s -fcmge v18.4h, v27.4h, #0.0 -fcmge v20.8h, v19.8h, v22.8h -fcmge v17.2s, v11.2s, #0.0 -fcmgt h4, h5, h0 -fcmgt h0, h18, #0.0 -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmgt v24.8h, v24.8h, v28.8h -fcmgt v0.8h, v11.8h, #0.0 -fcmgt v19.2d, v31.2d, #0.0 -fcmla v0.2s, v0.2s, v0.2s, #90 -fcmla v0.4s, v0.4s, v0.s[1], #0 -fcmle v16.8h, v11.8h, #0.0 -fcmle v22.4s, v30.4s, #0.0 -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmle h18, h28, #0.0 -fcmlt h23, h7, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcmlt v8.4h, v2.4h, #0.0 -fcmlt v7.2d, v16.2d, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas h12, h13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau h12, h13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms h22, h13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu h12, h13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns h22, h13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu h12, h13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps h22, h13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu h12, h13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs h21, h14 -fcvtzs h21, h12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v20.4h, v24.4h, #11 -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzs v18.8h, v10.8h, #7 -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu h12, h13 -fcvtzu h21, h12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v19.4h, v26.4h, #9 -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fcvtzu v27.8h, v6.8h, #11 -fdiv v0.2d, v0.2d, v0.2d -fdiv v0.2s, v0.2s, v0.2s -fdiv v0.4h, v0.4h, v0.4h -fdiv v0.4s, v0.4s, v0.4s -fdiv v0.8h, v0.8h, v0.8h -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp h25, v19.2h -fmaxnmp d17, v29.2d -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxnmv h0, v13.4h -fmaxnmv h12, v11.8h -fmaxnmv s28, v31.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmaxp h15, v25.2h -fmaxp s6, v2.2s -fmaxv h0, v0.4h -fmaxv h0, v0.8h -fmaxv s0, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp h20, v14.2h -fminnmp d15, v8.2d -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminnmv h19, v25.4h -fminnmv h23, v17.8h -fminnmv s29, v17.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fminp h7, v10.2h -fminp s17, v7.2s -fminv h3, v30.4h -fminv h29, v12.8h -fminv s16, v19.4s -fmla d0, d1, v0.d[1] -fmla h23, h24, v15.h[4] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmla v29.8h, v15.8h, v10.h[4] -fmla v2.2s, v16.2s, v28.s[0] -fmla v14.4s, v14.4s, v5.s[3] -fmla v1.4s, v24.4s, v12.4s -fmla v10.2d, v14.2d, v21.d[1] -fmlal v0.2s, v0.2h, v0.h[1] -fmlal v0.4s, v0.4h, v0.h[3] -fmlal v0.2s, v0.2h, v0.2h -fmlal v0.4s, v0.4h, v0.4h -fmlal2 v0.2s, v0.2h, v0.h[1] -fmlal2 v0.4s, v0.4h, v0.h[3] -fmlal2 v0.2s, v0.2h, v0.2h -fmlal2 v0.4s, v0.4h, v0.4h -fmls d0, d4, v0.d[1] -fmls h8, h14, v7.h[4] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmls v30.8h, v18.8h, v4.h[6] -fmls v10.2s, v27.2s, v0.s[0] -fmls v27.4s, v7.4s, v24.s[0] -fmls v10.2d, v22.2d, v29.d[0] -fmls v6.8h, v15.8h, v23.8h -fmlsl v0.2s, v0.2h, v0.h[1] -fmlsl v0.4s, v0.4h, v0.h[3] -fmlsl v0.2s, v0.2h, v0.2h -fmlsl v0.4s, v0.4h, v0.4h -fmlsl2 v0.2s, v0.2h, v0.h[1] -fmlsl2 v0.4s, v0.4h, v0.h[3] -fmlsl2 v0.2s, v0.2h, v0.2h -fmlsl2 v0.4s, v0.4h, v0.4h -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul h18, h4, v7.h[3] -fmul v10.4h, v2.4h, v7.h[5] -fmul v5.2s, v12.2s, v9.s[0] -fmul v15.4s, v30.4s, v2.s[3] -fmul v11.2d, v31.2d, v24.d[1] -fmul h28, h14, h3 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx h18, h17, v7.h[1] -fmulx h20, h25, h0 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v28.4h, v25.4h, v15.h[1] -fmulx v3.2s, v22.2s, v23.s[3] -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fmulx v5.4s, v28.4s, v15.s[3] -fmulx v22.2d, v18.2d, v25.d[1] -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe h20, h8 -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps h29, h19, h8 -frecpx h18, h11 -frecps v12.8h, v25.8h, v4.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecps v7.2d, v29.2d, v18.2d -frecpx d16, d19 -frecpx s18, s10 -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte h23, h26 -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrts v20.4s, v26.4s, v27.4s -frsqrts v8.4h, v9.4h, v30.4h -frsqrte v0.8h, v0.8h -frsqrts h28, h26, h1 -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v13.8h, v15.8h, v17.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.16b, v1.16b }, [x14] -ld1 { v19.16b, v20.16b, v21.16b }, [x10] -ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] -ld1 { v24.8h }, [x27] -ld1 { v1.8h, v2.8h }, [x27] -ld1 { v0.8h, v1.8h }, [sp], #32 -ld1 { v21.8h, v22.8h, v23.8h }, [x22] -ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] -ld1 { v3.4s }, [x4] -ld1 { v11.4s, v12.4s }, [x30] -ld1 { v0.4s, v1.4s, v2.4s }, [x24] -ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] -ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 -ld1 { v3.2d }, [x28] -ld1 { v13.2d, v14.2d }, [x13] -ld1 { v12.2d, v13.2d, v14.2d }, [x15] -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.1d }, [x15], x2 -ld1 { v27.1d, v28.1d }, [x7] -ld1 { v14.1d, v15.1d, v16.1d }, [x3] -ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] -ld1 { v0.2s, v1.2s }, [x15] -ld1 { v16.2s, v17.2s, v18.2s }, [x27] -ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] -ld1 { v25.4h, v26.4h }, [x3] -ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] -ld1 { v0.4h, v1.4h, v2.4h }, [sp] -ld1 { v24.8b, v25.8b }, [x6] -ld1 { v7.8b, v8.8b, v9.8b }, [x12] -ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.b }[7], [x0] -ld1 { v0.h }[3], [x0], #2 -ld1 { v18.h }[3], [x1] -ld1 { v0.s }[1], [x15] -ld1 { v0.d }[0], [x15], #8 -ld1 { v11.d }[0], [x13] -ld1r { v0.16b }, [x0] -ld1r { v0.8h }, [x0], #2 -ld1r { v0.4s }, [x15] -ld1r { v3.1d }, [x15] -ld1r { v0.2d }, [x15], x16 -ld1r { v18.2d }, [x0] -ld1r { v8.8b }, [x23] -ld1r { v28.4h }, [x9] -ld1r { v3.8h }, [x16] -ld1r { v10.2s }, [x20] -ld2 { v0.4h, v1.4h }, [x21] -ld2 { v8.8h, v9.8h }, [x28] -ld2 { v2.2s, v3.2s }, [x16] -ld2 { v22.4s, v23.4s }, [x4] -ld2 { v22.2d, v23.2d }, [x17] -ld2 { v29.b, v30.b }[3], [x1] -ld2 { v26.s, v27.s }[1], [x17] -ld2 { v1.d, v2.d }[0], [x10] -ld2 { v0.16b, v1.16b }, [x0] -ld2 { v13.8b, v14.8b }, [x4] -ld2 { v0.8b, v1.8b }, [x0], #16 -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], x8 -ld2r { v0.8b, v1.8b }, [x0] -ld2r { v10.16b, v11.16b }, [x23] -ld2r { v0.4h, v1.4h }, [x0], #4 -ld2r { v25.4h, v26.4h }, [x11] -ld2r { v23.8h, v24.8h }, [x10] -ld2r { v0.2s, v1.2s }, [sp] -ld2r { v8.4s, v9.4s }, [x17] -ld2r { v0.1d, v1.1d }, [sp], x8 -ld2r { v9.1d, v10.1d }, [x25] -ld2r { v26.2d, v27.2d }, [x8] -ld3 { v8.8b, v9.8b, v10.8b }, [x0] -ld3 { v15.16b, v16.16b, v17.16b }, [x5] -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 -ld3 { v7.8h, v8.8h, v9.8h }, [x21] -ld3 { v16.2s, v17.2s, v18.2s }, [x0] -ld3 { v12.4s, v13.4s, v14.4s }, [x25] -ld3 { v17.b, v18.b, v19.b }[2], [x27] -ld3 { v18.h, v19.h, v20.h }[5], [x16] -ld3 { v10.2d, v11.2d, v12.2d }, [x18] -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3 { v5.d, v6.d, v7.d }[1], [x14] -ld3r { v0.8b, v1.8b, v2.8b }, [x15] -ld3r { v17.16b, v18.16b, v19.16b }, [x3] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v3.4h, v4.4h, v5.4h }, [x1] -ld3r { v6.8h, v7.8h, v8.8h }, [x28] -ld3r { v0.2s, v1.2s, v2.2s }, [x0] -ld3r { v28.4s, v29.4s, v30.4s }, [x2] -ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 -ld3r { v1.1d, v2.1d, v3.1d }, [x28] -ld3r { v8.2d, v9.2d, v10.2d }, [x3] -ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] -ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] -ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] -ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] -ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] -ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] -ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] -ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] -ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] -ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] -ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 -ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] -ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 -mla v0.8b, v0.8b, v0.8b -mla v15.8h, v22.8h, v4.h[3] -mla v28.2s, v10.2s, v2.s[0] -mls v0.4h, v0.4h, v0.4h -mls v25.8h, v29.8h, v0.h[4] -mls v22.2s, v29.2s, v0.s[3] -mls v26.4s, v5.4s, v28.4s -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov w8, v8.s[0] -mov x30, v18.d[0] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v14.8h, #174 -movi v13.4h, #74, lsl #8 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v19.2s, #226 -movi v1.4s, #122, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mul v26.4h, v20.4h, v14.h[5] -mul v5.8h, v21.8h, v3.h[7] -mul v29.2s, v10.2s, v3.s[1] -mul v30.4s, v11.4s, v4.s[0] -mul v30.4s, v11.4s, v4.4s -mul v3.8h, v9.8h, v8.8h -mvni v9.4h, #237 -mvni v8.8h, #171, lsl #8 -mvni v22.4s, #15, lsl #8 -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orn v29.8b, v19.8b, v16.8b -orr v0.16b, v0.16b, v0.16b -orr v9.4h, #18 -orr v0.8h, #31 -orr v4.4s, #0 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabd v12.2s, v11.2s, v27.2s -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddlv d0, v0.4s -saddlv s0, v0.4h -saddlv s0, v0.8h -saddlv h0, v0.8b -saddlv h0, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf h4, h8, #9 -scvtf h5, h14 -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v25.4h, v13.4h, #8 -scvtf v0.8h, v0.8h -scvtf v4.8h, v8.8h, #10 -sdot v0.2s, v0.8b, v0.4b[2] -sdot v0.2s, v0.8b, v0.8b -sdot v0.4s, v0.16b, v0.16b -sdot v0.4s, v0.16b, v0.4b[2] -shadd v0.8b, v0.8b, v0.8b -shadd v25.16b, v1.16b, v10.16b -shl d7, d10, #12 -shl v23.8b, v18.8b, #6 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.8h, v23.8h, #10 -shl v0.4s, v0.4s, #3 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -shsub v15.8h, v5.8h, v27.8h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smax v30.16b, v3.16b, v30.16b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v21.8h, v16.8h, v7.8h -smaxp v0.8b, v0.8b, v0.8b -smaxv b0, v0.8b -smaxv b0, v0.16b -smaxv h0, v0.4h -smaxv h0, v0.8h -smaxv s0, v0.4s -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -sminv b0, v0.8b -sminv b0, v0.16b -sminv h0, v0.4h -sminv h0, v0.8h -sminv s0, v0.4s -smlal v0.2d, v0.2s, v0.2s -smlal v0.2d, v25.2s, v1.s[1] -smlal v0.4s, v0.4h, v0.4h -smlal v16.4s, v9.4h, v11.h[4] -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v30.2d, v22.4s, v7.s[2] -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v25.2d, v27.2s, v1.s[1] -smlsl v0.4s, v0.4h, v0.4h -smlsl v14.4s, v23.4h, v12.h[7] -smlsl v0.8h, v0.8b, v0.8b -smlal2 v1.4s, v9.8h, v0.h[6] -smlsl2 v12.4s, v11.8h, v12.h[0] -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v11.2d, v28.4s, v7.s[2] -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smmla v0.4s, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v31.2d, v23.2s, v6.s[2] -smull v0.4s, v0.4h, v0.4h -smull v3.4s, v26.4h, v1.h[5] -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v11.2d, v1.4s, v7.s[0] -smull2 v0.4s, v0.8h, v0.8h -smull2 v13.4s, v18.8h, v0.h[3] -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd h12, h18, h10 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v11.2d, v24.2s, v0.s[3] -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal v20.4s, v30.4h, v12.h[3] -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v23.2d, v30.4s, v6.s[0] -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlal2 v2.4s, v17.8h, v5.h[6] -sqdmulh v8.4h, v16.4h, v5.h[4] -sqdmulh v16.2s, v24.2s, v7.s[2] -sqdmull v8.4s, v19.4h, v1.h[2] -sqdmull v20.2d, v10.2s, v6.s[2] -sqdmull2 v10.4s, v25.8h, v0.h[7] -sqdmull2 v4.2d, v29.4s, v2.s[3] -sqrdmulh v0.8h, v15.8h, v0.h[5] -sqrdmulh v6.2s, v29.2s, v4.s[2] -sqrdmulh v31.2s, v17.2s, v4.2s -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v26.2d, v7.2s, v3.s[0] -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl v4.4s, v22.4h, v13.h[2] -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v4.2d, v3.4s, v3.s[2] -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmlsl2 v2.4s, v28.8h, v4.h[6] -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmlah h0, h1, v2.h[3] -sqrdmlah v0.4h, v1.4h, v2.h[3] -sqrdmlah v0.8h, v1.8h, v2.h[3] -sqrdmlah s0, s1, v2.s[1] -sqrdmlah v0.2s, v1.2s, v2.s[1] -sqrdmlah v0.4s, v1.4s, v2.s[1] -sqrdmlah h0, h1, h2 -sqrdmlah v0.4h, v1.4h, v2.4h -sqrdmlah v0.8h, v1.8h, v2.8h -sqrdmlah s0, s1, s2 -sqrdmlah v0.2s, v1.2s, v2.2s -sqrdmlah v0.4s, v1.4s, v2.4s -sqrdmlsh h0, h1, v2.h[3] -sqrdmlsh v0.4h, v1.4h, v2.h[3] -sqrdmlsh v0.8h, v1.8h, v2.h[3] -sqrdmlsh s0, s1, v2.s[1] -sqrdmlsh v0.2s, v1.2s, v2.s[1] -sqrdmlsh v0.4s, v1.4s, v2.s[1] -sqrdmlsh h0, h1, h2 -sqrdmlsh v0.4h, v1.4h, v2.4h -sqrdmlsh v0.8h, v1.8h, v2.8h -sqrdmlsh s0, s1, s2 -sqrdmlsh v0.2s, v1.2s, v2.2s -sqrdmlsh v0.4s, v1.4s, v2.4s -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqshl s17, s4, s23 -sqsub b3, b13, b12 -sqsub v20.8h, v18.8h, v12.8h -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v23.16b, v23.16b, v23.16b -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v9.8h, v2.8b, #0 -sshll v12.4s, v3.4h, #4 -sshll v0.2d, v0.2s, #3 -sshll2 v28.8h, v12.16b, #7 -sshll2 v0.4s, v0.8h, #3 -sshll2 v17.2d, v13.4s, #22 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v18.8b }, [x15] -st1 { v8.8b, v9.8b }, [x18] -st1 { v15.8b, v16.8b, v17.8b }, [x0] -st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] -st1 { v0.16b }, [x0] -st1 { v1.16b, v2.16b }, [x4] -st1 { v27.16b, v28.16b, v29.16b }, [x18] -st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] -st1 { v19.4h }, [x7] -st1 { v22.4h, v23.4h }, [x22] -st1 { v13.4h, v14.4h, v15.4h }, [x7] -st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] -st1 { v27.8h }, [x17] -st1 { v8.8h, v9.8h, v10.8h }, [x16] -st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] -st1 { v25.2s }, [x6] -st1 { v13.2s, v14.2s }, [x9] -st1 { v12.2s, v13.2s, v14.2s }, [x3] -st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v22.4s }, [x19] -st1 { v15.4s, v16.4s }, [x12] -st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] -st1 { v20.1d }, [x10] -st1 { v21.1d, v22.1d }, [x29] -st1 { v5.1d, v6.1d, v7.1d }, [x3] -st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] -st1 { v26.2d, v27.2d }, [x28] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v13.2d, v14.2d, v15.2d }, [x27] -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v8.2d }, [x15] -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v1.b }[5], [x1] -st1 { v0.h }[2], [x1] -st1 { v31.s }[1], [x16] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v6.16b, v7.16b }, [x23] -st2 { v10.4h, v11.4h }, [x18] -st2 { v10.8h, v11.8h }, [x18] -st2 { v25.2s, v26.2s }, [x29] -st2 { v26.4s, v27.4s }, [x14] -st2 { v10.2d, v11.2d }, [x1] -st2 { v21.b, v22.b }[15], [x15] -st2 { v28.h, v29.h }[2], [x6] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st2 { v17.d, v18.d }[1], [x1] -st3 { v10.8b, v11.8b, v12.8b }, [x18] -st3 { v26.16b, v27.16b, v28.16b }, [x4] -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.8h, v1.8h, v2.8h }, [x0] -st3 { v19.2s, v20.2s, v21.2s }, [x30] -st3 { v24.4s, v25.4s, v26.4s }, [x8] -st3 { v24.2d, v25.2d, v26.2d }, [x25] -st3 { v8.b, v9.b, v10.b }[4], [x18] -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st3 { v9.s, v10.s, v11.s }[2], [x20] -st3 { v16.d, v17.d, v18.d }[0], [x13] -st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] -st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] -st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] -st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] -st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] -st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] -st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] -st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] -st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] -st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -sub v15.2s, v14.2s, v11.2s -subhn v7.4h, v10.4s, v13.4s -subhn2 v24.4s, v24.2d, v8.2d -sudot v0.2s, v0.8b, v0.4b[2] -sudot v0.4s, v0.16b, v0.4b[2] -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uaba v13.16b, v14.16b, v19.16b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabd v23.4s, v4.4s, v30.4s -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddlv d0, v0.4s -uaddlv s0, v0.4h -uaddlv s0, v0.8h -uaddlv h0, v0.8b -uaddlv h0, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf h17, x12 -ucvtf h22, h16, #11 -ucvtf h7, h21 -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s8, x0 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v18.4h, v11.4h, #7 -ucvtf v0.8h, v0.8h -ucvtf v22.8h, v20.8h, #10 -udot v0.2s, v0.8b, v0.4b[2] -udot v0.2s, v0.8b, v0.8b -udot v0.4s, v0.16b, v0.16b -udot v0.4s, v0.16b, v0.4b[2] -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v12.4h, v16.4h, v28.4h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umaxv b0, v0.8b -umaxv b0, v0.16b -umaxv h0, v0.4h -umaxv h0, v0.8h -umaxv s0, v0.4s -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -umin v0.16b, v26.16b, v2.16b -uminp v0.2s, v0.2s, v0.2s -uminp v28.4s, v16.4s, v15.4s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -uminv b0, v0.8b -uminv b0, v0.16b -uminv h0, v0.4h -uminv h0, v0.8h -uminv s0, v0.4s -umlal v0.2d, v0.2s, v0.2s -umlal v28.2d, v31.2s, v0.s[1] -umlal v0.4s, v0.4h, v0.4h -umlal v22.4s, v14.4h, v0.h[6] -umlal v0.8h, v0.8b, v0.8b -umlal2 v10.2d, v4.4s, v3.s[2] -umlal2 v31.4s, v7.8h, v15.h[5] -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v20.2d, v20.2s, v2.s[0] -umlsl v0.4s, v0.4h, v0.4h -umlsl v21.4s, v12.4h, v7.h[5] -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v30.2d, v23.4s, v1.s[2] -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v27.4s, v28.8h, v6.h[4] -umlsl2 v0.8h, v0.16b, v0.16b -ummla v0.4s, v0.16b, v0.16b -umov w6, v22.b[0] -umov w0, v0.b[1] -umov w10, v25.h[0] -umov w0, v0.h[1] -umov w0, v0.s[1] -umov x0, v0.d[1] -umull v0.2d, v0.2s, v0.2s -umull v22.2d, v28.2s, v6.s[1] -umull v0.4s, v0.4h, v0.4h -umull v27.4s, v1.4h, v8.h[6] -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v28.2d, v21.4s, v1.s[0] -umull2 v0.4s, v0.8h, v0.8h -umull2 v18.4s, v26.8h, v10.h[1] -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd s0, s24, s30 -uqadd v0.8h, v0.8h, v0.8h -uqadd v14.2d, v22.2d, v20.2d -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v25.8b, v13.8b, v23.8b -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v8.4h, v17.4h, v13.4h -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub s16, s21, s6 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqsub v19.4s, v0.4s, v5.4s -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urhadd v16.2s, v19.2s, v2.2s -urshl d8, d7, d4 -urshl v31.8b, v5.8b, v3.8b -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -usdot v0.2s, v0.8b, v0.4b[2] -usdot v0.2s, v0.8b, v0.8b -usdot v0.4s, v0.16b, v0.16b -usdot v0.4s, v0.16b, v0.4b[2] -ushl d0, d0, d0 -ushl v6.8b, v26.8b, v6.8b -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll v18.8h, v24.8b, #4 -ushll v16.2d, v16.2s, #31 -ushll2 v31.2d, v12.4s, #11 -ushll2 v18.4s, v22.8h, #13 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usmmla v0.4s, v0.16b, v0.16b -smov w15, v22.b[0] -smov w26, v27.h[0] -smov x21, v0.b[0] -smov x9, v27.h[0] -smov x15, v3.s[0] -smov w0, v0.b[1] -smov w0, v0.h[1] -smov x0, v0.b[1] -smov x0, v0.h[1] -smov x0, v0.s[1] -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v1 -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1610,17 +40,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 -# CHECK-NEXT: 1 4 0.50 bfcvtn v0.4h, v0.4s -# CHECK-NEXT: 1 4 0.50 bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: 1 4 0.25 bfdot v0.2s, v24.4h, v14.2h[2] -# CHECK-NEXT: 1 4 0.25 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.25 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 4 0.25 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 4 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 4 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 bic v0.4h, #15, lsl #8 # CHECK-NEXT: 1 2 0.25 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.25 bic v0.8b, v0.8b, v0.8b @@ -1727,8 +146,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 faddp v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 faddp v16.2d, v11.2d, v5.2d -# CHECK-NEXT: 1 4 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 4 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 # CHECK-NEXT: 1 2 0.25 fcmeq h30, h6, h1 # CHECK-NEXT: 1 2 0.25 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq d20, d21, #0.0 @@ -1762,8 +179,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fcmgt v24.8h, v24.8h, v28.8h # CHECK-NEXT: 1 2 0.25 fcmgt v0.8h, v11.8h, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt v19.2d, v31.2d, #0.0 -# CHECK-NEXT: 1 4 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 4 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 # CHECK-NEXT: 1 2 0.25 fcmle v16.8h, v11.8h, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle d20, d21, #0.0 @@ -1941,14 +356,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 fmla v14.4s, v14.4s, v5.s[3] # CHECK-NEXT: 1 4 0.25 fmla v1.4s, v24.4s, v12.4s # CHECK-NEXT: 1 4 0.25 fmla v10.2d, v14.2d, v21.d[1] -# CHECK-NEXT: 1 2 0.25 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 2 0.25 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 5 0.25 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 2 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 2 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 5 0.25 fmlal2 v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.25 fmls d0, d4, v0.d[1] # CHECK-NEXT: 1 4 0.25 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.25 fmls s3, s5, v0.s[3] @@ -1958,14 +365,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 fmls v27.4s, v7.4s, v24.s[0] # CHECK-NEXT: 1 4 0.25 fmls v10.2d, v22.2d, v29.d[0] # CHECK-NEXT: 1 4 0.25 fmls v6.8h, v15.8h, v23.8h -# CHECK-NEXT: 1 2 0.25 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 2 0.25 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 5 0.25 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 2 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 2 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 5 0.25 fmlsl2 v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.25 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.25 fmov v0.4s, #1.00000000 @@ -2086,6 +485,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 6 0.33 * ld1 { v3.2d }, [x28] # CHECK-NEXT: 2 6 0.67 * ld1 { v13.2d, v14.2d }, [x13] # CHECK-NEXT: 3 6 1.00 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] +# CHECK-NEXT: 4 6 1.00 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 # CHECK-NEXT: 2 6 0.67 * ld1 { v27.1d, v28.1d }, [x7] @@ -2100,6 +500,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 6 0.67 * ld1 { v24.8b, v25.8b }, [x6] # CHECK-NEXT: 3 6 1.00 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] # CHECK-NEXT: 2 6 0.67 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] +# CHECK-NEXT: 3 6 0.67 * ld1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 3 6 0.67 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 # CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[7], [x0] # CHECK-NEXT: 3 8 0.33 * ld1 { v0.h }[3], [x0], #2 @@ -2107,6 +509,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 8 0.33 * ld1 { v0.s }[1], [x15] # CHECK-NEXT: 3 8 0.33 * ld1 { v0.d }[0], [x15], #8 # CHECK-NEXT: 2 8 0.33 * ld1 { v11.d }[0], [x13] +# CHECK-NEXT: 2 6 0.33 * ld1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [x15] +# CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[9], [x0] +# CHECK-NEXT: 3 8 0.33 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.16b }, [x0] # CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x0], #2 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.4s }, [x15] @@ -2128,8 +534,14 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 4 8 0.67 * ld2 { v0.16b, v1.16b }, [x0] # CHECK-NEXT: 3 8 0.50 * ld2 { v13.8b, v14.8b }, [x4] # CHECK-NEXT: 4 8 0.50 * ld2 { v0.8b, v1.8b }, [x0], #16 +# CHECK-NEXT: 3 8 0.33 * ld1r { v0.16b }, [x0], #1 +# CHECK-NEXT: 2 8 0.33 * ld1r { v0.8h }, [x15] +# CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x15], #2 +# CHECK-NEXT: 5 8 0.67 * ld2 { v0.16b, v1.16b }, [x0], x1 +# CHECK-NEXT: 3 8 0.50 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 3 8 0.50 * ld2 { v0.h, v1.h }[7], [x15] # CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], x8 +# CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], #4 # CHECK-NEXT: 3 8 0.50 * ld2r { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 3 8 0.50 * ld2r { v10.16b, v11.16b }, [x23] # CHECK-NEXT: 4 8 0.50 * ld2r { v0.4h, v1.4h }, [x0], #4 @@ -2142,6 +554,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 3 8 0.50 * ld2r { v26.2d, v27.2d }, [x8] # CHECK-NEXT: 5 8 0.75 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] # CHECK-NEXT: 6 8 1.00 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] +# CHECK-NEXT: 3 8 0.50 * ld2r { v0.2d, v1.2d }, [x0] +# CHECK-NEXT: 4 8 0.50 * ld2r { v0.2d, v1.2d }, [x0], #16 +# CHECK-NEXT: 3 8 0.50 * ld2r { v0.4s, v1.4s }, [sp] +# CHECK-NEXT: 4 8 0.50 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 5 8 0.75 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 # CHECK-NEXT: 6 8 1.00 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] @@ -2150,11 +566,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 5 8 0.75 * ld3 { v17.b, v18.b, v19.b }[2], [x27] # CHECK-NEXT: 5 8 0.75 * ld3 { v18.h, v19.h, v20.h }[5], [x16] # CHECK-NEXT: 6 8 1.00 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] +# CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 5 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 6 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 # CHECK-NEXT: 5 8 0.75 * ld3 { v5.d, v6.d, v7.d }[1], [x14] # CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] # CHECK-NEXT: 5 8 0.75 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] +# CHECK-NEXT: 5 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 6 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 # CHECK-NEXT: 5 8 0.75 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] # CHECK-NEXT: 5 8 0.75 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] @@ -2168,12 +586,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 7 8 1.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] # CHECK-NEXT: 8 9 1.33 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] # CHECK-NEXT: 8 9 1.33 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] +# CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] +# CHECK-NEXT: 6 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 9 9 1.33 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] # CHECK-NEXT: 8 9 1.33 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] # CHECK-NEXT: 7 8 1.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] # CHECK-NEXT: 7 8 1.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] +# CHECK-NEXT: 8 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 8 8 1.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] # CHECK-NEXT: 7 8 1.00 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] @@ -2186,6 +607,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 # CHECK-NEXT: 7 8 1.00 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] # CHECK-NEXT: 8 8 1.00 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 +# CHECK-NEXT: 8 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 +# CHECK-NEXT: 7 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +# CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 4 0.50 mla v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 4 0.50 mla v15.8h, v22.8h, v4.h[3] # CHECK-NEXT: 1 4 0.50 mla v28.2s, v10.2s, v2.s[0] @@ -2423,7 +847,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 0.50 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 smull v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 3 0.50 smull v0.4s, v0.4h, v0.4h @@ -2735,11 +1158,14 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] +# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 6 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 # CHECK-NEXT: 2 4 0.50 * st1 { v1.b }[5], [x1] # CHECK-NEXT: 2 4 0.50 * st1 { v0.h }[2], [x1] # CHECK-NEXT: 2 4 0.50 * st1 { v31.s }[1], [x16] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 4 0.50 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 3 4 0.50 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 5 4 1.00 * st2 { v0.16b, v1.16b }, [x0], x1 @@ -2780,14 +1206,14 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 6 6 1.00 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] # CHECK-NEXT: 6 6 1.00 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] # CHECK-NEXT: 4 4 1.00 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] +# CHECK-NEXT: 6 6 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: 7 6 1.00 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: 5 4 1.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.25 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.25 sub v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 sub v15.2s, v14.2s, v11.2s # CHECK-NEXT: 1 2 0.25 subhn v7.4h, v10.4s, v13.4s # CHECK-NEXT: 1 2 0.25 subhn2 v24.4s, v24.2d, v8.2d -# CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.25 sudot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 suqadd b19, b14 # CHECK-NEXT: 1 2 0.25 suqadd d18, d22 # CHECK-NEXT: 1 2 0.25 suqadd h20, h15 @@ -2944,7 +1370,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 umlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 0.50 umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 umov w6, v22.b[0] # CHECK-NEXT: 1 2 0.25 umov w0, v0.b[1] # CHECK-NEXT: 1 2 0.25 umov w10, v25.h[0] @@ -3050,10 +1475,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 ushl d0, d0, d0 # CHECK-NEXT: 1 2 0.50 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 0.50 ushl v0.16b, v0.16b, v0.16b @@ -3073,7 +1494,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 U smov w15, v22.b[0] # CHECK-NEXT: 1 2 0.25 U smov w26, v27.h[0] # CHECK-NEXT: 1 2 0.25 U smov x21, v0.b[0] @@ -3172,7 +1592,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] -# CHECK-NEXT: - - - - - - - 84.33 167.83 167.83 20.75 7.75 7.75 7.75 606.25 497.25 499.75 390.75 +# CHECK-NEXT: - - - - - - - 101.33 187.33 187.33 25.25 12.25 12.25 12.25 611.25 503.75 502.25 394.75 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7.0] [7.1] [8] [9] [10] [11] Instructions: @@ -3206,17 +1626,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v24.4h, v14.2h[2] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v0.4h, #15, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v0.8b, v0.8b, v0.8b @@ -3323,8 +1732,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v16.2d, v11.2d, v5.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq h30, h6, h1 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq d20, d21, #0.0 @@ -3358,8 +1765,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v24.8h, v24.8h, v28.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.8h, v11.8h, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v19.2d, v31.2d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v16.8h, v11.8h, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle d20, d21, #0.0 @@ -3537,14 +1942,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v14.4s, v14.4s, v5.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v1.4s, v24.4s, v12.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v10.2d, v14.2d, v21.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls s3, s5, v0.s[3] @@ -3554,14 +1951,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v27.4s, v7.4s, v24.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v10.2d, v22.2d, v29.d[0] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v6.8h, v15.8h, v23.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.4s, #1.00000000 @@ -3682,6 +2071,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ld1 { v3.2d }, [x28] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ld1 { v13.2d, v14.2d }, [x13] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 - - - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ld1 { v0.1d }, [x15], x2 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ld1 { v27.1d, v28.1d }, [x7] @@ -3696,6 +2086,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ld1 { v24.8b, v25.8b }, [x6] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ld1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1 { v0.b }[7], [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1 { v0.h }[3], [x0], #2 @@ -3703,6 +2095,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1 { v0.s }[1], [x15] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1 { v0.d }[0], [x15], #8 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1 { v11.d }[0], [x13] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ld1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ld1 { v0.8h, v1.8h }, [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1 { v0.b }[9], [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1r { v0.16b }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x0], #2 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1r { v0.4s }, [x15] @@ -3724,8 +2120,14 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2 { v13.8b, v14.8b }, [x4] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0], #16 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1r { v0.16b }, [x0], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x15], #2 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0], x1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], x8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], #4 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v10.16b, v11.16b }, [x23] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.4h, v1.4h }, [x0], #4 @@ -3738,6 +2140,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v26.2d, v27.2d }, [x8] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v8.8b, v9.8b, v10.8b }, [x0] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3 { v15.16b, v16.16b, v17.16b }, [x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2d, v1.2d }, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.2d, v1.2d }, [x0], #16 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.50 0.50 0.50 0.50 ld2r { v0.4s, v1.4s }, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3 { v7.8h, v8.8h, v9.8h }, [x21] @@ -3746,11 +2152,13 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v17.b, v18.b, v19.b }[2], [x27] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v18.h, v19.h, v20.h }[5], [x16] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 ld3 { v10.2d, v11.2d, v12.2d }, [x18] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3 { v5.d, v6.d, v7.d }[1], [x14] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x15] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v17.16b, v18.16b, v19.16b }, [x3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v3.4h, v4.4h, v5.4h }, [x1] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v6.8h, v7.8h, v8.8h }, [x28] @@ -3764,12 +2172,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - 1.00 1.00 1.00 1.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - 1.00 1.00 1.00 1.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - 1.00 1.00 1.00 1.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] @@ -3782,6 +2193,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - mla v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - mla v15.8h, v22.8h, v4.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - mla v28.2s, v10.2s, v2.s[0] @@ -4019,7 +2433,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.4s, v0.4h, v0.4h @@ -4331,11 +2744,14 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - st1 { v8.2d }, [x15] # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - st1 { v0.8h, v1.8h }, [x15] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - st1 { v1.b }[5], [x1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - st1 { v0.h }[2], [x1] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - st1 { v31.s }[1], [x16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - st2 { v0.16b, v1.16b }, [x0], x1 @@ -4376,14 +2792,14 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 1.00 1.00 - - st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v15.2s, v14.2s, v11.2s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhn v7.4h, v10.4s, v13.4s # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhn2 v24.4s, v24.2d, v8.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd h20, h15 @@ -4540,7 +2956,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w6, v22.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w0, v0.b[1] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w10, v25.h[0] @@ -4646,10 +3061,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushl d0, d0, d0 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v0.16b, v0.16b, v0.16b @@ -4669,7 +3080,6 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov w15, v22.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov w26, v27.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x21, v0.b[0] diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-bf16-instructions.s new file mode 100644 index 0000000000000..e96fbb52ee639 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-bf16-instructions.s @@ -0,0 +1,63 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -instruction-tables < %p/Inputs/bf16-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 +# CHECK-NEXT: 2 4 1.00 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 2 4 1.00 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 2 0.25 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: 1 5 0.25 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: 1 5 0.25 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 6 0.25 bfmmla v0.4s, v0.8h, v0.8h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V2UnitB +# CHECK-NEXT: [0.1] - V2UnitB +# CHECK-NEXT: [1.0] - V2UnitD +# CHECK-NEXT: [1.1] - V2UnitD +# CHECK-NEXT: [2.0] - V2UnitFlg +# CHECK-NEXT: [2.1] - V2UnitFlg +# CHECK-NEXT: [2.2] - V2UnitFlg +# CHECK-NEXT: [3] - V2UnitL2 +# CHECK-NEXT: [4.0] - V2UnitL01 +# CHECK-NEXT: [4.1] - V2UnitL01 +# CHECK-NEXT: [5] - V2UnitM0 +# CHECK-NEXT: [6] - V2UnitM1 +# CHECK-NEXT: [7] - V2UnitS0 +# CHECK-NEXT: [8] - V2UnitS1 +# CHECK-NEXT: [9] - V2UnitS2 +# CHECK-NEXT: [10] - V2UnitS3 +# CHECK-NEXT: [11] - V2UnitV0 +# CHECK-NEXT: [12] - V2UnitV1 +# CHECK-NEXT: [13] - V2UnitV2 +# CHECK-NEXT: [14] - V2UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.50 2.00 4.50 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-complxnum-instructions.s new file mode 100644 index 0000000000000..a61a0cae20ac7 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-complxnum-instructions.s @@ -0,0 +1,49 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -instruction-tables < %p/Inputs/complxnum-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 2 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 4 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V2UnitB +# CHECK-NEXT: [0.1] - V2UnitB +# CHECK-NEXT: [1.0] - V2UnitD +# CHECK-NEXT: [1.1] - V2UnitD +# CHECK-NEXT: [2.0] - V2UnitFlg +# CHECK-NEXT: [2.1] - V2UnitFlg +# CHECK-NEXT: [2.2] - V2UnitFlg +# CHECK-NEXT: [3] - V2UnitL2 +# CHECK-NEXT: [4.0] - V2UnitL01 +# CHECK-NEXT: [4.1] - V2UnitL01 +# CHECK-NEXT: [5] - V2UnitM0 +# CHECK-NEXT: [6] - V2UnitM1 +# CHECK-NEXT: [7] - V2UnitS0 +# CHECK-NEXT: [8] - V2UnitS1 +# CHECK-NEXT: [9] - V2UnitS2 +# CHECK-NEXT: [10] - V2UnitS3 +# CHECK-NEXT: [11] - V2UnitV0 +# CHECK-NEXT: [12] - V2UnitV1 +# CHECK-NEXT: [13] - V2UnitV2 +# CHECK-NEXT: [14] - V2UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-fp16fml-instructions.s new file mode 100644 index 0000000000000..d826870b0f02e --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-fp16fml-instructions.s @@ -0,0 +1,73 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -instruction-tables < %p/Inputs/fp16fml-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.4h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V2UnitB +# CHECK-NEXT: [0.1] - V2UnitB +# CHECK-NEXT: [1.0] - V2UnitD +# CHECK-NEXT: [1.1] - V2UnitD +# CHECK-NEXT: [2.0] - V2UnitFlg +# CHECK-NEXT: [2.1] - V2UnitFlg +# CHECK-NEXT: [2.2] - V2UnitFlg +# CHECK-NEXT: [3] - V2UnitL2 +# CHECK-NEXT: [4.0] - V2UnitL01 +# CHECK-NEXT: [4.1] - V2UnitL01 +# CHECK-NEXT: [5] - V2UnitM0 +# CHECK-NEXT: [6] - V2UnitM1 +# CHECK-NEXT: [7] - V2UnitS0 +# CHECK-NEXT: [8] - V2UnitS1 +# CHECK-NEXT: [9] - V2UnitS2 +# CHECK-NEXT: [10] - V2UnitS3 +# CHECK-NEXT: [11] - V2UnitV0 +# CHECK-NEXT: [12] - V2UnitV1 +# CHECK-NEXT: [13] - V2UnitV2 +# CHECK-NEXT: [14] - V2UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.00 4.00 4.00 4.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-fptoint-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-fptoint-instructions.s new file mode 100644 index 0000000000000..b4221be05ed12 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-fptoint-instructions.s @@ -0,0 +1,65 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -instruction-tables < %p/Inputs/fptoint-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 frint32x v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint32x v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint32x v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 frint32z v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint32z v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint32z v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 frint64x v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint64x v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint64x v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 frint64z v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint64z v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint64z v0.4s, v0.4s + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V2UnitB +# CHECK-NEXT: [0.1] - V2UnitB +# CHECK-NEXT: [1.0] - V2UnitD +# CHECK-NEXT: [1.1] - V2UnitD +# CHECK-NEXT: [2.0] - V2UnitFlg +# CHECK-NEXT: [2.1] - V2UnitFlg +# CHECK-NEXT: [2.2] - V2UnitFlg +# CHECK-NEXT: [3] - V2UnitL2 +# CHECK-NEXT: [4.0] - V2UnitL01 +# CHECK-NEXT: [4.1] - V2UnitL01 +# CHECK-NEXT: [5] - V2UnitM0 +# CHECK-NEXT: [6] - V2UnitM1 +# CHECK-NEXT: [7] - V2UnitS0 +# CHECK-NEXT: [8] - V2UnitS1 +# CHECK-NEXT: [9] - V2UnitS2 +# CHECK-NEXT: [10] - V2UnitS3 +# CHECK-NEXT: [11] - V2UnitV0 +# CHECK-NEXT: [12] - V2UnitV1 +# CHECK-NEXT: [13] - V2UnitV2 +# CHECK-NEXT: [14] - V2UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 8.00 - 8.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32z v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64z v0.4s, v0.4s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-i8mm-instructions.s new file mode 100644 index 0000000000000..adfb6bbf6657a --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-i8mm-instructions.s @@ -0,0 +1,59 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -instruction-tables < %p/Inputs/i8mm-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.25 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V2UnitB +# CHECK-NEXT: [0.1] - V2UnitB +# CHECK-NEXT: [1.0] - V2UnitD +# CHECK-NEXT: [1.1] - V2UnitD +# CHECK-NEXT: [2.0] - V2UnitFlg +# CHECK-NEXT: [2.1] - V2UnitFlg +# CHECK-NEXT: [2.2] - V2UnitFlg +# CHECK-NEXT: [3] - V2UnitL2 +# CHECK-NEXT: [4.0] - V2UnitL01 +# CHECK-NEXT: [4.1] - V2UnitL01 +# CHECK-NEXT: [5] - V2UnitM0 +# CHECK-NEXT: [6] - V2UnitM1 +# CHECK-NEXT: [7] - V2UnitS0 +# CHECK-NEXT: [8] - V2UnitS1 +# CHECK-NEXT: [9] - V2UnitS2 +# CHECK-NEXT: [10] - V2UnitS3 +# CHECK-NEXT: [11] - V2UnitV0 +# CHECK-NEXT: [12] - V2UnitV1 +# CHECK-NEXT: [13] - V2UnitV2 +# CHECK-NEXT: [14] - V2UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.25 2.25 2.25 2.25 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-neon-instructions.s index 0fd6bc73c461f..6580d6a6590b4 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-neon-instructions.s @@ -1,1234 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -mattr=+aes,+sha3,+sm4 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -addv s0, v0.4s -addv h0, v0.4h -addv h0, v0.8h -addv b0, v0.8b -addv b0, v0.16b -aesd v0.16b, v0.16b -aese v0.16b, v0.16b -aesimc v0.16b, v0.16b -aesmc v0.16b, v0.16b -and v0.8b, v0.8b, v0.8b -bfcvt h0, s0 -bfcvtn v0.4h, v0.4s -bfcvtn2 v0.8h, v0.4s -bfdot v0.2s, v0.4h, v0.4h -bfdot v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.h[3] -bfmlalt v0.4s, v0.8h, v0.8h -bfmlalt v0.4s, v0.8h, v0.h[3] -bfmmla v0.4s, v0.8h, v0.8h -bic v0.4h, #15, lsl #8 -bic v0.8b, v0.8b, v0.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -dup b0, v0.b[1] -dup d0, v0.d[1] -dup h0, v0.h[1] -dup s0, v0.s[1] -dup v0.16b, v0.b[1] -dup v0.2d, v0.d[1] -dup v0.2s, v0.s[1] -dup v0.4h, v0.h[1] -dup v0.4s, v0.s[1] -dup v0.8b, v0.b[1] -dup v0.8h, v0.h[1] -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd v0.4s, v0.4s, v0.4s -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt v0.2d, v0.2d, v0.2d -fadd v0.4s, v0.4s, v0.4s -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -fcadd v0.2s, v0.2s, v0.2s, 90 -fcadd v0.4s, v0.4s, v0.4s, 270 -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v0.4s, v0.4s, v0.4s -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmla v0.2s, v0.2s, v0.2s, #90 -fcmla v0.4s, v0.4s, v0.s[1], #0 -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas h12, h13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau h12, h13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms h22, h13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu h12, h13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns h22, h13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu h12, h13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps h22, h13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu h12, h13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs h21, h14 -fcvtzs h21, h12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu h12, h13 -fcvtzu h21, h12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fdiv v0.2d, v0.2d, v0.2d -fdiv v0.2s, v0.2s, v0.2s -fdiv v0.4h, v0.4h, v0.4h -fdiv v0.4s, v0.4s, v0.4s -fdiv v0.8h, v0.8h, v0.8h -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmaxv h0, v0.4h -fmaxv h0, v0.8h -fmaxv s0, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fmla d0, d1, v0.d[1] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmlal v0.2s, v0.2h, v0.h[1] -fmlal v0.4s, v0.4h, v0.h[3] -fmlal v0.2s, v0.2h, v0.2h -fmlal v0.4s, v0.4h, v0.4h -fmlal2 v0.2s, v0.2h, v0.h[1] -fmlal2 v0.4s, v0.4h, v0.h[3] -fmlal2 v0.2s, v0.2h, v0.2h -fmlal2 v0.4s, v0.4h, v0.4h -fmls d0, d4, v0.d[1] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmlsl v0.2s, v0.2h, v0.h[1] -fmlsl v0.4s, v0.4h, v0.h[3] -fmlsl v0.2s, v0.2h, v0.2h -fmlsl v0.4s, v0.4h, v0.4h -fmlsl2 v0.2s, v0.2h, v0.h[1] -fmlsl2 v0.4s, v0.4h, v0.h[3] -fmlsl2 v0.2s, v0.2h, v0.2h -fmlsl2 v0.4s, v0.4h, v0.4h -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecpx d16, d19 -frecpx s18, s10 -frint32x v0.2d, v0.2d -frint32x v0.2s, v0.2s -frint32x v0.4s, v0.4s -frint32z v0.2d, v0.2d -frint32z v0.2s, v0.2s -frint32z v0.4s, v0.4s -frint64x v0.2d, v0.2d -frint64x v0.2s, v0.2s -frint64x v0.4s, v0.4s -frint64z v0.2d, v0.2d -frint64z v0.2s, v0.2s -frint64z v0.4s, v0.4s -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrte v0.8h, v0.8h -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.4s, v1.4s }, [sp], #32 -ld1 { v0.4s, v1.4s, v2.4s }, [sp] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.8h }, [x15], x2 -ld1 { v0.8h, v1.8h }, [x15] -ld1 { v0.b }[9], [x0] -ld1 { v0.b }[9], [x0], #1 -ld1r { v0.16b }, [x0] -ld1r { v0.16b }, [x0], #1 -ld1r { v0.8h }, [x15] -ld1r { v0.8h }, [x15], #2 -ld2 { v0.16b, v1.16b }, [x0], x1 -ld2 { v0.8b, v1.8b }, [x0] -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], #4 -ld2r { v0.2d, v1.2d }, [x0] -ld2r { v0.2d, v1.2d }, [x0], #16 -ld2r { v0.4s, v1.4s }, [sp] -ld2r { v0.4s, v1.4s }, [sp], #8 -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3r { v0.4h, v1.4h, v2.4h }, [x15] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v0.8b, v1.8b, v2.8b }, [x0] -ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 -mla v0.8b, v0.8b, v0.8b -mls v0.4h, v0.4h, v0.4h -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orr v0.16b, v0.16b, v0.16b -orr v0.8h, #31 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddlv d0, v0.4s -saddlv s0, v0.4h -saddlv s0, v0.8h -saddlv h0, v0.8b -saddlv h0, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v0.8h, v0.8h -sdot v0.2s, v0.8b, v0.4b[2] -sdot v0.2s, v0.8b, v0.8b -sdot v0.4s, v0.16b, v0.16b -sdot v0.4s, v0.16b, v0.4b[2] -shadd v0.8b, v0.8b, v0.8b -shl d7, d10, #12 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.4s, v0.4s, #3 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v0.8b, v0.8b, v0.8b -smaxv b0, v0.8b -smaxv b0, v0.16b -smaxv h0, v0.4h -smaxv h0, v0.8h -smaxv s0, v0.4s -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -sminv b0, v0.8b -sminv b0, v0.16b -sminv h0, v0.4h -sminv h0, v0.8h -sminv s0, v0.4s -smlal v0.2d, v0.2s, v0.2s -smlal v0.4s, v0.4h, v0.4h -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v0.4s, v0.4h, v0.4h -smlsl v0.8h, v0.8b, v0.8b -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smmla v0.4s, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v0.4s, v0.4h, v0.4h -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v0.4s, v0.8h, v0.8h -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmlah h0, h1, v2.h[3] -sqrdmlah v0.4h, v1.4h, v2.h[3] -sqrdmlah v0.8h, v1.8h, v2.h[3] -sqrdmlah s0, s1, v2.s[1] -sqrdmlah v0.2s, v1.2s, v2.s[1] -sqrdmlah v0.4s, v1.4s, v2.s[1] -sqrdmlah h0, h1, h2 -sqrdmlah v0.4h, v1.4h, v2.4h -sqrdmlah v0.8h, v1.8h, v2.8h -sqrdmlah s0, s1, s2 -sqrdmlah v0.2s, v1.2s, v2.2s -sqrdmlah v0.4s, v1.4s, v2.4s -sqrdmlsh h0, h1, v2.h[3] -sqrdmlsh v0.4h, v1.4h, v2.h[3] -sqrdmlsh v0.8h, v1.8h, v2.h[3] -sqrdmlsh s0, s1, v2.s[1] -sqrdmlsh v0.2s, v1.2s, v2.s[1] -sqrdmlsh v0.4s, v1.4s, v2.s[1] -sqrdmlsh h0, h1, h2 -sqrdmlsh v0.4h, v1.4h, v2.4h -sqrdmlsh v0.8h, v1.8h, v2.8h -sqrdmlsh s0, s1, s2 -sqrdmlsh v0.2s, v1.2s, v2.2s -sqrdmlsh v0.4s, v1.4s, v2.4s -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v0.2d, v0.2s, #3 -sshll2 v0.4s, v0.8h, #3 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v0.16b }, [x0] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -sudot v0.2s, v0.8b, v0.4b[2] -sudot v0.4s, v0.16b, v0.4b[2] -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddlv d0, v0.4s -uaddlv s0, v0.4h -uaddlv s0, v0.8h -uaddlv h0, v0.8b -uaddlv h0, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v0.8h, v0.8h -udot v0.2s, v0.8b, v0.4b[2] -udot v0.2s, v0.8b, v0.8b -udot v0.4s, v0.16b, v0.16b -udot v0.4s, v0.16b, v0.4b[2] -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umaxv b0, v0.8b -umaxv b0, v0.16b -umaxv h0, v0.4h -umaxv h0, v0.8h -umaxv s0, v0.4s -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -uminp v0.2s, v0.2s, v0.2s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -uminv b0, v0.8b -uminv b0, v0.16b -uminv h0, v0.4h -uminv h0, v0.8h -uminv s0, v0.4s -umlal v0.2d, v0.2s, v0.2s -umlal v0.4s, v0.4h, v0.4h -umlal v0.8h, v0.8b, v0.8b -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v0.4s, v0.4h, v0.4h -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v0.8h, v0.16b, v0.16b -ummla v0.4s, v0.16b, v0.16b -umov w0, v0.b[1] -umov w0, v0.h[1] -umov w0, v0.s[1] -umov x0, v0.d[1] -umull v0.2d, v0.2s, v0.2s -umull v0.4s, v0.4h, v0.4h -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v0.4s, v0.8h, v0.8h -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd v0.8h, v0.8h, v0.8h -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urshl d8, d7, d4 -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -usdot v0.2s, v0.8b, v0.4b[2] -usdot v0.2s, v0.8b, v0.8b -usdot v0.4s, v0.16b, v0.16b -usdot v0.4s, v0.16b, v0.4b[2] -ushl d0, d0, d0 -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usmmla v0.4s, v0.16b, v0.16b -smov w0, v0.b[1] -smov w0, v0.h[1] -smov x0, v0.b[1] -smov x0, v0.h[1] -smov x0, v0.s[1] -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v2 -mattr=+aes -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1255,8 +26,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: 1 2 0.25 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 addp d1, v14.2d # CHECK-NEXT: 1 3 0.50 addv s0, v0.4s # CHECK-NEXT: 1 3 0.50 addv h0, v0.4h # CHECK-NEXT: 2 5 0.50 addv h0, v0.8h @@ -1267,21 +40,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 -# CHECK-NEXT: 2 4 1.00 bfcvtn v0.4h, v0.4s -# CHECK-NEXT: 2 4 1.00 bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: 1 5 0.25 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: 1 5 0.25 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 6 0.25 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: 1 2 0.25 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.25 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: 1 2 0.25 bic v24.2s, #70 +# CHECK-NEXT: 1 2 0.25 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: 1 2 0.25 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: 1 2 0.25 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: 1 2 0.25 cls v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 cls v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 cls v0.4h, v0.4h @@ -1294,28 +63,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 clz v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 clz v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 clz v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: 1 2 0.25 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: 1 2 0.25 cmeq d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: 1 2 0.25 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.25 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: 1 2 0.25 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: 1 2 0.25 cmge d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmge d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: 1 2 0.25 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: 1 2 0.25 cmgt d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: 1 2 0.25 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: 1 2 0.25 cmhi d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 cmhs d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: 1 2 0.25 cmle d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: 1 2 0.25 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: 1 2 0.25 cmlt d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: 1 2 0.25 cmtst d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.25 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: 1 2 0.25 cnt v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 cnt v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 dup v0.16b, w28 @@ -1341,7 +119,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.25 fabd d29, d24, d20 # CHECK-NEXT: 1 2 0.25 fabd s29, s24, s20 +# CHECK-NEXT: 1 2 0.25 fabd h27, h20, h17 +# CHECK-NEXT: 1 2 0.25 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: 1 2 0.25 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fabs h25, h7 # CHECK-NEXT: 1 2 0.25 fabs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fabs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fabs v0.4h, v0.4h @@ -1349,41 +130,67 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 facge d20, d21, d22 # CHECK-NEXT: 1 2 0.25 facge s10, s11, s12 +# CHECK-NEXT: 1 2 0.25 facge h24, h26, h29 +# CHECK-NEXT: 1 2 0.25 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: 1 2 0.25 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: 1 2 0.25 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 facgt d20, d21, d22 # CHECK-NEXT: 1 2 0.25 facgt s10, s11, s12 +# CHECK-NEXT: 1 2 0.25 facgt h0, h4, h10 # CHECK-NEXT: 1 2 0.25 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.25 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: 1 2 0.25 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: 1 2 0.25 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 faddp h10, v19.2h +# CHECK-NEXT: 1 2 0.25 faddp d11, v28.2d # CHECK-NEXT: 1 2 0.25 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 faddp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 2 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 2 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 2 0.25 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: 1 2 0.25 fcmeq h30, h6, h1 +# CHECK-NEXT: 1 2 0.25 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.25 fcmeq s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq s10, s11, s12 # CHECK-NEXT: 1 2 0.25 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.25 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: 1 2 0.25 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge h10, h23, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge h1, h16, h12 # CHECK-NEXT: 1 2 0.25 fcmge d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmge d20, d21, d22 # CHECK-NEXT: 1 2 0.25 fcmge s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmge s10, s11, s12 # CHECK-NEXT: 1 2 0.25 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: 1 2 0.25 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: 1 2 0.25 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmgt h4, h5, h0 +# CHECK-NEXT: 1 2 0.25 fcmgt h0, h18, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.25 fcmgt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt s10, s11, s12 # CHECK-NEXT: 1 2 0.25 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 4 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 +# CHECK-NEXT: 1 2 0.25 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: 1 2 0.25 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmle h18, h28, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmlt h23, h7, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: 1 3 0.50 fcvtas d21, d14 # CHECK-NEXT: 2 4 1.00 fcvtas s12, s13 # CHECK-NEXT: 4 6 2.00 fcvtas h12, h13 @@ -1470,9 +277,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 1.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 2 4 1.00 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: 2 4 1.00 fcvtzs v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 2.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: 1 3 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 3 0.50 fcvtzu d21, d14 # CHECK-NEXT: 2 4 1.00 fcvtzu s12, s13 @@ -1484,9 +293,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 1.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 2 4 1.00 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: 2 4 1.00 fcvtzu v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 2.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 fcvtzu v27.8h, v6.8h, #11 # CHECK-NEXT: 1 15 7.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 10 2.50 fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 7 3.50 fdiv v0.4h, v0.4h, v0.4h @@ -1498,12 +309,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fmaxnmp h25, v19.2h +# CHECK-NEXT: 1 2 0.25 fmaxnmp d17, v29.2d # CHECK-NEXT: 1 2 0.25 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: 3 6 0.75 fmaxnmv h12, v11.8h +# CHECK-NEXT: 2 4 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: 1 2 0.25 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fmaxp h15, v25.2h +# CHECK-NEXT: 1 2 0.25 fmaxp s6, v2.2s # CHECK-NEXT: 2 4 0.50 fmaxv h0, v0.4h # CHECK-NEXT: 3 6 0.75 fmaxv h0, v0.8h # CHECK-NEXT: 2 4 0.50 fmaxv s0, v0.4s @@ -1513,52 +331,71 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fminnmp h20, v14.2h +# CHECK-NEXT: 1 2 0.25 fminnmp d15, v8.2d # CHECK-NEXT: 1 2 0.25 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: 3 6 0.75 fminnmv h23, v17.8h +# CHECK-NEXT: 2 4 0.50 fminnmv s29, v17.4s # CHECK-NEXT: 1 2 0.25 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fminp h7, v10.2h +# CHECK-NEXT: 1 2 0.25 fminp s17, v7.2s +# CHECK-NEXT: 2 4 0.50 fminv h3, v30.4h +# CHECK-NEXT: 3 6 0.75 fminv h29, v12.8h +# CHECK-NEXT: 2 4 0.50 fminv s16, v19.4s # CHECK-NEXT: 1 4 0.25 fmla d0, d1, v0.d[1] +# CHECK-NEXT: 1 4 0.25 fmla h23, h24, v15.h[4] # CHECK-NEXT: 1 4 0.25 fmla s0, s1, v0.s[3] # CHECK-NEXT: 1 4 0.25 fmla v0.2s, v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: 1 4 0.25 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: 1 4 0.25 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: 1 4 0.25 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: 1 4 0.25 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: 1 4 0.25 fmls d0, d4, v0.d[1] +# CHECK-NEXT: 1 4 0.25 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.25 fmls s3, s5, v0.s[3] # CHECK-NEXT: 1 4 0.25 fmls v0.2s, v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: 1 4 0.25 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: 1 4 0.25 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: 1 4 0.25 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: 1 4 0.25 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: 1 2 0.25 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.25 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.25 fmov v0.4s, #1.00000000 +# CHECK-NEXT: 1 3 0.25 fmul h18, h4, v7.h[3] +# CHECK-NEXT: 1 3 0.25 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: 1 3 0.25 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: 1 3 0.25 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: 1 3 0.25 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: 1 3 0.25 fmul h28, h14, h3 # CHECK-NEXT: 1 3 0.25 fmul d0, d1, v0.d[1] # CHECK-NEXT: 1 3 0.25 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.25 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.25 fmulx d0, d4, v0.d[1] # CHECK-NEXT: 1 2 0.25 fmulx d23, d11, d1 # CHECK-NEXT: 1 2 0.25 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.25 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: 1 2 0.25 fmulx h20, h25, h0 # CHECK-NEXT: 1 3 0.25 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.25 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.25 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: 1 3 0.25 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: 1 3 0.25 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.25 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.25 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: 1 3 0.25 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: 1 2 0.25 fneg v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fneg v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fneg v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 fneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 fneg v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 frecpe h20, h8 # CHECK-NEXT: 1 3 0.50 frecpe d13, d13 # CHECK-NEXT: 1 3 0.50 frecpe s19, s14 # CHECK-NEXT: 1 2 0.25 frecpe v0.2d, v0.2d @@ -1566,23 +403,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 frecpe v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 frecpe v0.4s, v0.4s # CHECK-NEXT: 4 6 2.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 frecps h29, h19, h8 +# CHECK-NEXT: 1 3 0.50 frecpx h18, h11 +# CHECK-NEXT: 1 4 0.25 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: 1 4 0.25 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.25 frecps d22, d30, d21 # CHECK-NEXT: 1 4 0.25 frecps s21, s16, s13 +# CHECK-NEXT: 1 4 0.25 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: 1 3 0.50 frecpx d16, d19 # CHECK-NEXT: 1 3 0.50 frecpx s18, s10 -# CHECK-NEXT: 1 3 0.50 frint32x v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint32x v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint32x v0.4s, v0.4s -# CHECK-NEXT: 1 3 0.50 frint32z v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint32z v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint32z v0.4s, v0.4s -# CHECK-NEXT: 1 3 0.50 frint64x v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint64x v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint64x v0.4s, v0.4s -# CHECK-NEXT: 1 3 0.50 frint64z v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint64z v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint64z v0.4s, v0.4s # CHECK-NEXT: 1 3 0.50 frinta v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frinta v0.2s, v0.2s # CHECK-NEXT: 2 4 1.00 frinta v0.4h, v0.4h @@ -1618,13 +447,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 frintz v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 frintz v0.4s, v0.4s # CHECK-NEXT: 4 6 2.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 frsqrte h23, h26 # CHECK-NEXT: 1 3 0.50 frsqrte d21, d12 # CHECK-NEXT: 1 3 0.50 frsqrte s22, s13 # CHECK-NEXT: 1 2 0.25 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frsqrte v0.2s, v0.2s # CHECK-NEXT: 2 4 1.00 frsqrte v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.25 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: 1 4 0.25 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: 4 6 2.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 frsqrts h28, h26, h1 # CHECK-NEXT: 1 4 0.25 frsqrts d8, d22, d18 # CHECK-NEXT: 1 4 0.25 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.25 frsqrts v0.2d, v0.2d, v0.2d @@ -1633,52 +466,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 7 3.50 fsqrt v0.4h, v0.4h # CHECK-NEXT: 1 10 4.50 fsqrt v0.4s, v0.4s # CHECK-NEXT: 1 13 6.50 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: 1 2 0.25 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 6 0.33 * ld1 { v0.16b }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: 3 6 1.00 * ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: 4 7 1.33 * ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: 1 6 0.33 * ld1 { v24.8h }, [x27] +# CHECK-NEXT: 2 6 0.67 * ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 3 6 1.00 * ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: 4 7 1.33 * ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.4s }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: 4 7 1.33 * ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: 4 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.2d }, [x28] +# CHECK-NEXT: 2 6 0.67 * ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: 3 6 1.00 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: 4 6 1.00 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: 2 6 0.67 * ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: 3 6 1.00 * ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: 4 7 1.33 * ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: 2 6 0.67 * ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: 3 6 1.00 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: 4 7 1.33 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: 3 6 0.67 * ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 7 1.33 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[7], [x0] +# CHECK-NEXT: 3 8 0.33 * ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: 2 8 0.33 * ld1 { v18.h }[3], [x1] +# CHECK-NEXT: 2 8 0.33 * ld1 { v0.s }[1], [x15] +# CHECK-NEXT: 3 8 0.33 * ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: 2 8 0.33 * ld1 { v11.d }[0], [x13] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[9], [x0] # CHECK-NEXT: 3 8 0.33 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.16b }, [x0] +# CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: 2 8 0.33 * ld1r { v0.4s }, [x15] +# CHECK-NEXT: 2 8 0.33 * ld1r { v3.1d }, [x15] +# CHECK-NEXT: 3 8 0.33 * ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: 2 8 0.33 * ld1r { v18.2d }, [x0] +# CHECK-NEXT: 2 8 0.33 * ld1r { v8.8b }, [x23] +# CHECK-NEXT: 2 8 0.33 * ld1r { v28.4h }, [x9] +# CHECK-NEXT: 2 8 0.33 * ld1r { v3.8h }, [x16] +# CHECK-NEXT: 2 8 0.33 * ld1r { v10.2s }, [x20] +# CHECK-NEXT: 3 8 0.50 * ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: 4 8 0.67 * ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: 3 8 0.50 * ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: 4 8 0.67 * ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: 4 8 0.67 * ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: 3 8 0.50 * ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: 3 8 0.50 * ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: 3 8 0.50 * ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: 4 8 0.67 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 3 8 0.50 * ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: 4 8 0.50 * ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: 3 8 0.33 * ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.8h }, [x15] # CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: 5 8 0.67 * ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 8 0.50 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 3 8 0.50 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: 3 8 0.50 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 3 8 0.50 * ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: 4 8 0.50 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 3 8 0.50 * ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: 3 8 0.50 * ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: 3 8 0.50 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 3 8 0.50 * ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: 4 8 0.50 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 3 8 0.50 * ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: 3 8 0.50 * ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: 5 8 0.75 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: 6 8 1.00 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: 3 8 0.50 * ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: 4 8 0.50 * ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: 3 8 0.50 * ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: 4 8 0.50 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 5 8 0.75 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 6 8 1.00 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: 5 8 0.75 * ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: 6 8 1.00 * ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: 5 8 0.75 * ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: 5 8 0.75 * ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: 6 8 1.00 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 5 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 6 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 5 8 0.75 * ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 6 8 1.00 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: 5 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 6 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 5 8 0.75 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: 6 8 1.00 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: 5 8 0.75 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 6 8 1.00 * ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: 6 8 0.75 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 5 8 0.75 * ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: 6 8 1.00 * ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: 7 8 1.00 * ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: 10 9 2.00 * ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: 7 8 1.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: 10 9 2.00 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: 10 9 2.00 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: 6 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 11 9 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 10 9 2.00 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: 7 8 1.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: 7 8 1.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: 8 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 8 8 1.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 7 8 1.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: 7 8 1.00 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: 8 8 1.33 * ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: 7 8 1.00 * ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: 7 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 8 8 1.33 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 8 8 1.33 * ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: 7 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 8 8 1.33 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: 9 8 1.33 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 8 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: 7 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 4 0.50 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: 1 4 0.50 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: 1 4 0.50 mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: 1 4 0.50 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: 1 4 0.50 mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: 1 2 0.25 mov b0, v0.b[15] # CHECK-NEXT: 1 2 0.25 mov d6, v0.d[1] # CHECK-NEXT: 1 2 0.25 mov h2, v0.h[5] # CHECK-NEXT: 1 2 0.25 mov s17, v0.s[2] +# CHECK-NEXT: 2 2 1.00 mov w8, v8.s[0] +# CHECK-NEXT: 2 2 1.00 mov x30, v18.d[0] # CHECK-NEXT: 1 2 0.25 mov v2.b[0], v0.b[0] # CHECK-NEXT: 1 2 0.25 mov v2.h[1], v0.h[1] # CHECK-NEXT: 1 2 0.25 mov v2.s[2], v0.s[2] @@ -1691,11 +635,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 mov v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: 1 2 0.25 movi v0.16b, #31 +# CHECK-NEXT: 1 2 0.25 movi v14.8h, #174 +# CHECK-NEXT: 1 2 0.25 movi v13.4h, #74, lsl #8 # CHECK-NEXT: 1 2 0.25 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: 1 2 0.25 movi v0.2s, #8, msl #8 +# CHECK-NEXT: 1 2 0.25 movi v19.2s, #226 +# CHECK-NEXT: 1 2 0.25 movi v1.4s, #122, msl #8 # CHECK-NEXT: 1 2 0.25 movi v0.4s, #255, lsl #24 # CHECK-NEXT: 1 2 0.25 movi v0.8b, #255 # CHECK-NEXT: 1 4 0.50 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: 1 4 0.50 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: 1 4 0.50 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: 1 4 0.50 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: 1 4 0.50 mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: 1 4 0.50 mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: 1 2 0.25 mvni v9.4h, #237 +# CHECK-NEXT: 1 2 0.25 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: 1 2 0.25 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: 1 2 0.25 mvni v0.2s, #0 # CHECK-NEXT: 1 2 0.25 mvni v0.4s, #16, msl #16 # CHECK-NEXT: 1 2 0.25 neg d29, d24 @@ -1709,8 +666,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 mvn v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 mvn v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.25 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: 1 2 0.25 mov v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.25 orr v9.4h, #18 # CHECK-NEXT: 1 2 0.25 orr v0.8h, #31 +# CHECK-NEXT: 1 2 0.25 orr v4.4s, #0 # CHECK-NEXT: 1 3 0.50 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 pmull v0.8h, v0.8b, v0.8b @@ -1755,6 +715,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: 1 2 0.25 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 sabdl v0.8h, v0.8b, v0.8b @@ -1790,6 +751,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.25 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 4 6 2.00 scvtf h4, h8, #9 +# CHECK-NEXT: 4 6 2.00 scvtf h5, h14 # CHECK-NEXT: 1 3 0.50 scvtf d21, d12 # CHECK-NEXT: 1 3 0.50 scvtf d21, d12, #64 # CHECK-NEXT: 2 4 1.00 scvtf s22, s13 @@ -1801,26 +764,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 scvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 scvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 1.00 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: 4 6 2.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 scvtf v4.8h, v8.8h, #10 # CHECK-NEXT: 1 3 0.25 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.25 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: 1 2 0.50 shl d7, d10, #12 +# CHECK-NEXT: 1 2 0.50 shl v23.8b, v18.8b, #6 # CHECK-NEXT: 1 2 0.50 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 2 0.50 shl v0.8h, v23.8h, #10 # CHECK-NEXT: 1 2 0.50 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: 1 2 0.50 shll v0.2d, v0.2s, #32 # CHECK-NEXT: 1 2 0.50 shll v0.4s, v0.4h, #16 # CHECK-NEXT: 1 2 0.50 shll v0.8h, v0.8b, #8 # CHECK-NEXT: 1 2 0.50 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: 1 2 0.50 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: 1 2 0.50 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: 1 2 0.50 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: 1 2 0.50 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: 1 2 0.50 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: 1 2 0.50 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: 1 2 0.50 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: 1 2 0.50 shll2 v0.8h, v0.16b, #8 @@ -1832,6 +794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.25 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: 1 2 0.50 sli d10, d14, #12 # CHECK-NEXT: 1 2 0.50 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sli v0.2d, v0.2d, #3 @@ -1843,8 +806,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: 1 2 0.25 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: 1 2 0.25 smaxp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 2 5 0.50 smaxv b0, v0.8b # CHECK-NEXT: 2 6 1.00 smaxv b0, v0.16b @@ -1863,23 +828,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 5 0.50 sminv h0, v0.8h # CHECK-NEXT: 1 3 0.50 sminv s0, v0.4s # CHECK-NEXT: 1 4 0.50 smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: 1 4 0.50 smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: 1 4 0.50 smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 0.50 smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: 1 4 0.50 smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: 1 4 0.50 smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: 1 4 0.50 smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: 1 4 0.50 smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: 1 4 0.50 smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 0.50 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 0.50 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 3 0.50 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 0.50 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: 1 3 0.50 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: 1 3 0.50 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: 1 3 0.50 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sqabs b19, b14 # CHECK-NEXT: 1 2 0.25 sqabs d18, d12 @@ -1893,6 +869,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 sqabs v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 sqabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 sqadd b20, b11, b15 +# CHECK-NEXT: 1 2 0.25 sqadd h12, h18, h10 # CHECK-NEXT: 1 2 0.25 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 sqdmlal d19, s24, s12 @@ -1900,17 +877,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: 1 4 0.50 sqdmlal s17, h27, h12 # CHECK-NEXT: 1 4 0.50 sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: 1 4 0.50 sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: 1 4 0.50 sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: 1 4 0.50 sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: 1 4 0.50 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: 1 4 0.50 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: 1 3 0.50 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: 1 3 0.50 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: 1 3 0.50 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: 1 3 0.50 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: 1 4 0.50 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: 1 4 0.50 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: 1 4 0.50 sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: 1 4 0.50 sqdmlsl d12, s23, s13 # CHECK-NEXT: 1 4 0.50 sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: 1 4 0.50 sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: 1 4 0.50 sqdmlsl s14, h12, h25 # CHECK-NEXT: 1 4 0.50 sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: 1 4 0.50 sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: 1 4 0.50 sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: 1 4 0.50 sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: 1 4 0.50 sqdmulh h10, h11, h12 # CHECK-NEXT: 1 4 0.50 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 0.50 sqdmulh s15, s14, v0.s[1] @@ -1971,6 +965,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.50 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 sqshl s17, s4, s23 +# CHECK-NEXT: 1 2 0.25 sqsub b3, b13, b12 +# CHECK-NEXT: 1 2 0.25 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: 1 4 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: 1 4 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: 1 4 0.50 sqrshrn s15, d12, #9 @@ -1996,6 +993,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqshl h3, h4, h15 # CHECK-NEXT: 1 4 0.50 sqshl s14, s17, #22 # CHECK-NEXT: 1 4 0.50 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: 1 4 0.50 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: 1 4 0.50 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 0.50 sqshl v0.2s, v0.2s, v0.2s @@ -2092,8 +1090,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: 1 2 0.50 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: 1 2 0.50 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: 1 2 0.50 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: 1 2 0.50 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: 1 2 0.50 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: 1 2 0.50 sshr d15, d16, #12 # CHECK-NEXT: 1 2 0.50 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sshr v0.2d, v0.2d, #3 @@ -2122,32 +1124,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.25 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 2 0.50 * st1 { v18.8b }, [x15] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: 6 2 1.50 * st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: 8 2 2.00 * st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: 2 2 0.50 * st1 { v19.4h }, [x7] +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: 4 2 1.00 * st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: 4 2 1.00 * st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: 2 2 0.50 * st1 { v27.8h }, [x17] +# CHECK-NEXT: 6 2 1.50 * st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: 8 2 2.00 * st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v25.2s }, [x6] +# CHECK-NEXT: 2 2 0.50 * st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: 4 2 1.00 * st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4s }, [x19] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: 8 2 2.00 * st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: 2 2 0.50 * st1 { v20.1d }, [x10] +# CHECK-NEXT: 2 2 0.50 * st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: 4 2 1.00 * st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: 4 2 1.00 * st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: 7 2 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 6 2 1.50 * st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: 8 2 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 6 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 3 4 1.00 * st1 { v1.b }[5], [x1] +# CHECK-NEXT: 3 4 1.00 * st1 { v0.h }[2], [x1] +# CHECK-NEXT: 3 4 1.00 * st1 { v31.s }[1], [x16] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 3 4 1.00 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 4 4 1.00 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 7 4 2.00 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 4 1.00 * st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 6 4 2.00 * st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: 3 4 1.00 * st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: 6 4 2.00 * st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: 3 4 1.00 * st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: 6 4 2.00 * st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: 6 4 2.00 * st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: 3 4 1.00 * st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: 3 4 1.00 * st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: 3 4 1.00 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 4 4 1.00 * st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: 3 4 1.00 * st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: 6 5 2.00 * st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: 9 6 3.00 * st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: 6 5 2.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 10 6 3.00 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 9 6 3.00 * st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: 6 5 2.00 * st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: 9 6 3.00 * st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: 9 6 3.00 * st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: 6 5 2.00 * st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: 6 5 2.00 * st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: 7 5 2.00 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 6 5 2.00 * st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: 6 5 2.00 * st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: 8 6 3.00 * st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: 16 7 6.00 * st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: 8 6 3.00 * st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: 16 7 6.00 * st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: 8 6 3.00 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 17 7 6.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 16 7 6.00 * st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: 12 5 4.00 * st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: 4 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 4 6 1.50 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: 4 6 1.50 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: 6 4 2.00 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: 4 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: 5 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: 7 4 2.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.25 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.25 sub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 2 0.25 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: 1 2 0.25 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: 1 2 0.25 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: 1 2 0.25 suqadd b19, b14 # CHECK-NEXT: 1 2 0.25 suqadd d18, d22 # CHECK-NEXT: 1 2 0.25 suqadd h20, h15 @@ -2190,6 +1256,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: 1 4 0.50 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.50 uabal v0.8h, v0.8b, v0.8b @@ -2197,6 +1264,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: 1 2 0.25 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 uabdl v0.8h, v0.8b, v0.8b @@ -2232,8 +1300,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.25 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 ucvtf h17, x12 +# CHECK-NEXT: 4 6 2.00 ucvtf h22, h16, #11 +# CHECK-NEXT: 4 6 2.00 ucvtf h7, h21 # CHECK-NEXT: 1 3 0.50 ucvtf d21, d14 # CHECK-NEXT: 1 3 0.50 ucvtf d21, d14, #64 +# CHECK-NEXT: 1 3 1.00 ucvtf s8, x0 # CHECK-NEXT: 2 4 1.00 ucvtf s22, s13 # CHECK-NEXT: 2 4 1.00 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 0.50 ucvtf v0.2d, v0.2d @@ -2243,13 +1315,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 ucvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 ucvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 1.00 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: 4 6 2.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 ucvtf v22.8h, v20.8h, #10 # CHECK-NEXT: 1 3 0.25 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.25 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 udot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: 1 2 0.25 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 umax v0.4s, v0.4s, v0.4s @@ -2265,7 +1340,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: 1 2 0.25 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.25 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: 1 2 0.25 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 uminp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 2 5 0.50 uminv b0, v0.8b @@ -2274,35 +1351,50 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 5 0.50 uminv h0, v0.8h # CHECK-NEXT: 1 3 0.50 uminv s0, v0.4s # CHECK-NEXT: 1 4 0.50 umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: 1 4 0.50 umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: 1 4 0.50 umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: 1 4 0.50 umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: 1 4 0.50 umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: 1 4 0.50 umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: 1 4 0.50 umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 0.50 umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: 1 4 0.50 umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 0.50 umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 2 2 1.00 umov w6, v22.b[0] # CHECK-NEXT: 2 2 1.00 umov w0, v0.b[1] +# CHECK-NEXT: 2 2 1.00 umov w10, v25.h[0] # CHECK-NEXT: 2 2 1.00 umov w0, v0.h[1] # CHECK-NEXT: 2 2 1.00 mov w0, v0.s[1] # CHECK-NEXT: 2 2 1.00 mov x0, v0.d[1] # CHECK-NEXT: 1 3 0.50 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 0.50 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: 1 3 0.50 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 0.50 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: 1 3 0.50 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: 1 3 0.50 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: 1 3 0.50 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 uqadd h0, h1, h5 +# CHECK-NEXT: 1 2 0.25 uqadd s0, s24, s30 # CHECK-NEXT: 1 2 0.25 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: 1 4 0.50 uqrshl b11, b20, b30 # CHECK-NEXT: 1 4 0.50 uqrshl s23, s20, s16 +# CHECK-NEXT: 1 4 0.50 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: 1 4 0.50 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: 1 4 0.50 uqrshrn h12, s10, #14 @@ -2325,6 +1417,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.50 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 0.50 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 4 0.50 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: 1 4 0.50 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 uqshl v0.8b, v0.8b, #3 @@ -2339,8 +1432,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 2 0.25 uqsub s16, s21, s6 # CHECK-NEXT: 1 2 0.25 uqsub d16, d16, d16 # CHECK-NEXT: 1 2 0.25 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: 1 4 0.50 uqxtn b18, h18 # CHECK-NEXT: 1 4 0.50 uqxtn h20, s17 # CHECK-NEXT: 1 4 0.50 uqxtn s19, d14 @@ -2355,7 +1450,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: 1 4 0.50 urshl d8, d7, d4 +# CHECK-NEXT: 1 4 0.50 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: 1 4 0.50 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.50 urshl v0.4s, v0.4s, v0.4s @@ -2378,15 +1475,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 ushl d0, d0, d0 +# CHECK-NEXT: 1 2 0.50 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 0.50 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: 1 2 0.50 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: 1 2 0.50 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: 1 2 0.50 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: 1 2 0.50 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: 1 2 0.50 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ushr d10, d17, #18 # CHECK-NEXT: 1 2 0.50 ushr v0.16b, v0.16b, #3 @@ -2396,7 +1494,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 2 2 1.00 U smov w15, v22.b[0] +# CHECK-NEXT: 2 2 1.00 U smov w26, v27.h[0] +# CHECK-NEXT: 2 2 1.00 U smov x21, v0.b[0] +# CHECK-NEXT: 2 2 1.00 U smov x9, v27.h[0] +# CHECK-NEXT: 2 2 1.00 U smov x15, v3.s[0] # CHECK-NEXT: 2 2 1.00 smov w0, v0.b[1] # CHECK-NEXT: 2 2 1.00 smov w0, v0.h[1] # CHECK-NEXT: 2 2 1.00 smov x0, v0.b[1] @@ -2492,7 +1594,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] -# CHECK-NEXT: - - - - - - - 27.33 48.83 48.83 16.17 5.17 5.17 5.17 5.17 5.17 503.25 376.25 451.75 324.75 +# CHECK-NEXT: - - - - - - - 106.00 189.00 189.00 21.17 8.17 8.17 8.17 8.17 8.17 725.75 566.75 561.75 402.75 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2.0] [2.1] [2.2] [3] [4.0] [4.1] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] Instructions: @@ -2512,8 +1614,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp d1, v14.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 addv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 addv h0, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv h0, v0.8h @@ -2524,21 +1628,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 -# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v24.2s, #70 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.4h, v0.4h @@ -2551,28 +1651,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhi d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhs d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmle d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmlt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmtst d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - dup v0.16b, w28 @@ -2598,7 +1707,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd d29, d24, d20 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd s29, s24, s20 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd h27, h20, h17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs h25, h7 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.4h, v0.4h @@ -2606,41 +1718,67 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge h24, h26, h29 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt h0, h4, h10 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp h10, v19.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp d11, v28.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq h30, h6, h1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge h10, h23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge h1, h16, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt h4, h5, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt h0, h18, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle h18, h28, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt h23, h7, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas h12, h13 @@ -2727,9 +1865,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s12, s13 @@ -2741,9 +1881,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu v27.8h, v6.8h, #11 # CHECK-NEXT: - - - - - - - - - - - - - - - - 7.00 - 7.00 - fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.50 - 2.50 - fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4h, v0.4h, v0.4h @@ -2755,12 +1897,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp h25, v19.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp d17, v29.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxnmv h12, v11.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp h15, v25.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp s6, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxv h0, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxv s0, v0.4s @@ -2770,52 +1919,71 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp h20, v14.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp d15, v8.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminnmv h23, v17.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminnmv s29, v17.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp h7, v10.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp s17, v7.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminv h3, v30.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminv h29, v12.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminv s16, v19.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla d0, d1, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla h23, h24, v15.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls d0, d4, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.4s, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul h18, h4, v7.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul h28, h14, h3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul d0, d1, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx d23, d11, d1 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx s20, s22, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx h20, h25, h0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe h20, h8 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe s19, s14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecpe v0.2d, v0.2d @@ -2823,23 +1991,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps h29, h19, h8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx h18, h11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps s21, s16, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx d16, d19 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx s18, s10 -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32x v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32z v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64x v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64z v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4h, v0.4h @@ -2875,13 +2035,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte h23, h26 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte s22, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts h28, h26, h1 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v0.2d, v0.2d, v0.2d @@ -2890,52 +2054,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 4.50 - 4.50 - fsqrt v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 6.50 - 6.50 - fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1 { v24.8h }, [x27] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1 { v3.4s }, [x4] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1 { v3.2d }, [x28] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1 { v0.b }[7], [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1 { v18.h }[3], [x1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1 { v0.s }[1], [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1 { v11.d }[0], [x13] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1 { v0.b }[9], [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v0.4s }, [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v3.1d }, [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v18.2d }, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v8.8b }, [x23] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v28.4h }, [x9] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v3.8h }, [x16] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v10.2s }, [x20] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x15] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 0.50 0.50 ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 0.75 0.75 0.75 0.75 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: - - - - - - - 2.00 2.00 2.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: - - - - - - - 2.00 2.00 2.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: - - - - - - - 2.00 2.00 2.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.17 0.17 0.17 0.17 0.17 0.17 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - 2.00 2.00 2.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - - - - - 2.00 2.00 2.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov b0, v0.b[15] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov d6, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov h2, v0.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov s17, v0.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - mov w8, v8.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - mov x30, v18.d[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.b[0], v0.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.h[1], v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.s[2], v0.s[2] @@ -2948,11 +2223,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.16b, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v14.8h, #174 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v13.4h, #74, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.2s, #8, msl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v19.2s, #226 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v1.4s, #122, msl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.4s, #255, lsl #24 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.8b, #255 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v9.4h, #237 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v0.4s, #16, msl #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg d29, d24 @@ -2966,8 +2254,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvn v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvn v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v9.4h, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v0.8h, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v4.4s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmull v0.8h, v0.8b, v0.8b @@ -3012,6 +2303,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl v0.8h, v0.8b, v0.8b @@ -3047,6 +2339,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf h4, h8, #9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf h5, h14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf d21, d12, #64 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13 @@ -3058,26 +2352,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v4.8h, v8.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl v23.8b, v18.8b, #6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.8h, v23.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll v0.2d, v0.2s, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll v0.4s, v0.4h, #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll v0.8h, v0.8b, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shll2 v0.8h, v0.16b, #8 @@ -3089,6 +2382,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.2d, v0.2d, #3 @@ -3100,8 +2394,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 smaxv b0, v0.16b @@ -3120,23 +2416,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs d18, d12 @@ -3150,6 +2457,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd b20, b11, b15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd h12, h18, h10 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal d19, s24, s12 @@ -3157,17 +2465,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal s17, h27, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl d12, s23, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl s14, h12, h25 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh s15, s14, v0.s[1] @@ -3228,6 +2553,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl s17, s4, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub b3, b13, b12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn s15, d12, #9 @@ -3253,6 +2581,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl h3, h4, h15 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl s14, s17, #22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.2s, v0.2s, v0.2s @@ -3349,8 +2678,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2d, v0.2d, #3 @@ -3379,32 +2712,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v18.8b }, [x15] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 1.50 1.50 - - st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v19.4h }, [x7] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v27.8h }, [x17] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 1.50 1.50 - - st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v25.2s }, [x6] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v22.4s }, [x19] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v20.1d }, [x10] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: - - - - - - - - 1.50 1.50 0.17 0.17 0.17 0.17 0.17 0.17 1.50 1.50 - - st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 1.50 1.50 - - st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1 { v8.2d }, [x15] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 - - st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 1.50 1.50 - - st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st1 { v1.b }[5], [x1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st1 { v0.h }[2], [x1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st1 { v31.s }[1], [x16] # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 - - st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 2.00 2.00 - - st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 3.00 3.00 - - st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - - 1.50 1.50 0.17 0.17 0.17 0.17 0.17 0.17 3.00 3.00 - - st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 3.00 3.00 - - st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 3.00 3.00 - - st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - - - 3.00 3.00 - - st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 2.00 2.00 - - st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 3.00 3.00 - - st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 6.00 6.00 - - st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 3.00 3.00 - - st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 6.00 6.00 - - st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 3.00 3.00 - - st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - 2.00 2.00 0.17 0.17 0.17 0.17 0.17 0.17 6.00 6.00 - - st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 6.00 6.00 - - st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 4.00 4.00 - - st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.50 1.50 - - st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.50 1.50 - - st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 2.00 2.00 - - st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: - - - - - - - - 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 2.00 2.00 - - st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd h20, h15 @@ -3447,6 +2844,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabal v0.8h, v0.8b, v0.8b @@ -3454,6 +2852,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl v0.8h, v0.8b, v0.8b @@ -3489,8 +2888,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h17, x12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf h22, h16, #11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf h7, h21 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s8, x0 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf s22, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d @@ -3500,13 +2903,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v22.8h, v20.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.4s, v0.4s, v0.4s @@ -3522,7 +2928,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uminv b0, v0.8b @@ -3531,35 +2939,50 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w6, v22.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w10, v25.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w0, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - mov w0, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd h0, h1, h5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd s0, s24, s30 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl b11, b20, b30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn h12, s10, #14 @@ -3582,6 +3005,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8b, v0.8b, #3 @@ -3596,8 +3020,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub s16, s21, s6 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub d16, d16, d16 # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn b18, h18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn h20, s17 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn s19, d14 @@ -3612,7 +3038,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl d8, d7, d4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.4s, v0.4s, v0.4s @@ -3635,15 +3063,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushl d0, d0, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.16b, v0.16b, #3 @@ -3653,7 +3082,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w15, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w26, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x21, v0.b[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x9, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x15, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w0, v0.b[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w0, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x0, v0.b[1] diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-bf16-instructions.s new file mode 100644 index 0000000000000..6622307ae4dfe --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-bf16-instructions.s @@ -0,0 +1,68 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -instruction-tables < %p/Inputs/bf16-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 +# CHECK-NEXT: 2 4 1.00 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 2 4 1.00 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 2 0.25 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: 1 5 0.25 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: 1 5 0.25 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 6 0.25 bfmmla v0.4s, v0.8h, v0.8h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3UnitB +# CHECK-NEXT: [0.1] - V3UnitB +# CHECK-NEXT: [0.2] - V3UnitB +# CHECK-NEXT: [1.0] - V3UnitD +# CHECK-NEXT: [1.1] - V3UnitD +# CHECK-NEXT: [2.0] - V3UnitFlg +# CHECK-NEXT: [2.1] - V3UnitFlg +# CHECK-NEXT: [2.2] - V3UnitFlg +# CHECK-NEXT: [2.3] - V3UnitFlg +# CHECK-NEXT: [3.0] - V3UnitL12 +# CHECK-NEXT: [3.1] - V3UnitL12 +# CHECK-NEXT: [4] - V3UnitLS0 +# CHECK-NEXT: [5] - V3UnitM0 +# CHECK-NEXT: [6] - V3UnitM1 +# CHECK-NEXT: [7] - V3UnitS0 +# CHECK-NEXT: [8] - V3UnitS1 +# CHECK-NEXT: [9] - V3UnitS2 +# CHECK-NEXT: [10] - V3UnitS3 +# CHECK-NEXT: [11] - V3UnitS4 +# CHECK-NEXT: [12] - V3UnitS5 +# CHECK-NEXT: [13] - V3UnitST1 +# CHECK-NEXT: [14] - V3UnitV0 +# CHECK-NEXT: [15] - V3UnitV1 +# CHECK-NEXT: [16] - V3UnitV2 +# CHECK-NEXT: [17] - V3UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.50 2.00 4.50 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-complxnum-instructions.s new file mode 100644 index 0000000000000..86f434d020f70 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-complxnum-instructions.s @@ -0,0 +1,54 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -instruction-tables < %p/Inputs/complxnum-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 2 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 4 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3UnitB +# CHECK-NEXT: [0.1] - V3UnitB +# CHECK-NEXT: [0.2] - V3UnitB +# CHECK-NEXT: [1.0] - V3UnitD +# CHECK-NEXT: [1.1] - V3UnitD +# CHECK-NEXT: [2.0] - V3UnitFlg +# CHECK-NEXT: [2.1] - V3UnitFlg +# CHECK-NEXT: [2.2] - V3UnitFlg +# CHECK-NEXT: [2.3] - V3UnitFlg +# CHECK-NEXT: [3.0] - V3UnitL12 +# CHECK-NEXT: [3.1] - V3UnitL12 +# CHECK-NEXT: [4] - V3UnitLS0 +# CHECK-NEXT: [5] - V3UnitM0 +# CHECK-NEXT: [6] - V3UnitM1 +# CHECK-NEXT: [7] - V3UnitS0 +# CHECK-NEXT: [8] - V3UnitS1 +# CHECK-NEXT: [9] - V3UnitS2 +# CHECK-NEXT: [10] - V3UnitS3 +# CHECK-NEXT: [11] - V3UnitS4 +# CHECK-NEXT: [12] - V3UnitS5 +# CHECK-NEXT: [13] - V3UnitST1 +# CHECK-NEXT: [14] - V3UnitV0 +# CHECK-NEXT: [15] - V3UnitV1 +# CHECK-NEXT: [16] - V3UnitV2 +# CHECK-NEXT: [17] - V3UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-fp16fml-instructions.s new file mode 100644 index 0000000000000..017568cf5b0d9 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-fp16fml-instructions.s @@ -0,0 +1,78 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -instruction-tables < %p/Inputs/fp16fml-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.4h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3UnitB +# CHECK-NEXT: [0.1] - V3UnitB +# CHECK-NEXT: [0.2] - V3UnitB +# CHECK-NEXT: [1.0] - V3UnitD +# CHECK-NEXT: [1.1] - V3UnitD +# CHECK-NEXT: [2.0] - V3UnitFlg +# CHECK-NEXT: [2.1] - V3UnitFlg +# CHECK-NEXT: [2.2] - V3UnitFlg +# CHECK-NEXT: [2.3] - V3UnitFlg +# CHECK-NEXT: [3.0] - V3UnitL12 +# CHECK-NEXT: [3.1] - V3UnitL12 +# CHECK-NEXT: [4] - V3UnitLS0 +# CHECK-NEXT: [5] - V3UnitM0 +# CHECK-NEXT: [6] - V3UnitM1 +# CHECK-NEXT: [7] - V3UnitS0 +# CHECK-NEXT: [8] - V3UnitS1 +# CHECK-NEXT: [9] - V3UnitS2 +# CHECK-NEXT: [10] - V3UnitS3 +# CHECK-NEXT: [11] - V3UnitS4 +# CHECK-NEXT: [12] - V3UnitS5 +# CHECK-NEXT: [13] - V3UnitST1 +# CHECK-NEXT: [14] - V3UnitV0 +# CHECK-NEXT: [15] - V3UnitV1 +# CHECK-NEXT: [16] - V3UnitV2 +# CHECK-NEXT: [17] - V3UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 4.00 4.00 4.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-fptoint-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-fptoint-instructions.s new file mode 100644 index 0000000000000..6a823470af0b5 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-fptoint-instructions.s @@ -0,0 +1,70 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -instruction-tables < %p/Inputs/fptoint-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 frint32x v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint32x v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint32x v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 frint32z v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint32z v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint32z v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 frint64x v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint64x v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint64x v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 frint64z v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 frint64z v0.2s, v0.2s +# CHECK-NEXT: 2 4 1.00 frint64z v0.4s, v0.4s + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3UnitB +# CHECK-NEXT: [0.1] - V3UnitB +# CHECK-NEXT: [0.2] - V3UnitB +# CHECK-NEXT: [1.0] - V3UnitD +# CHECK-NEXT: [1.1] - V3UnitD +# CHECK-NEXT: [2.0] - V3UnitFlg +# CHECK-NEXT: [2.1] - V3UnitFlg +# CHECK-NEXT: [2.2] - V3UnitFlg +# CHECK-NEXT: [2.3] - V3UnitFlg +# CHECK-NEXT: [3.0] - V3UnitL12 +# CHECK-NEXT: [3.1] - V3UnitL12 +# CHECK-NEXT: [4] - V3UnitLS0 +# CHECK-NEXT: [5] - V3UnitM0 +# CHECK-NEXT: [6] - V3UnitM1 +# CHECK-NEXT: [7] - V3UnitS0 +# CHECK-NEXT: [8] - V3UnitS1 +# CHECK-NEXT: [9] - V3UnitS2 +# CHECK-NEXT: [10] - V3UnitS3 +# CHECK-NEXT: [11] - V3UnitS4 +# CHECK-NEXT: [12] - V3UnitS5 +# CHECK-NEXT: [13] - V3UnitST1 +# CHECK-NEXT: [14] - V3UnitV0 +# CHECK-NEXT: [15] - V3UnitV1 +# CHECK-NEXT: [16] - V3UnitV2 +# CHECK-NEXT: [17] - V3UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 8.00 - 8.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32z v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64z v0.4s, v0.4s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-i8mm-instructions.s new file mode 100644 index 0000000000000..9ed5bd395da4b --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-i8mm-instructions.s @@ -0,0 +1,64 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -instruction-tables < %p/Inputs/i8mm-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.25 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3UnitB +# CHECK-NEXT: [0.1] - V3UnitB +# CHECK-NEXT: [0.2] - V3UnitB +# CHECK-NEXT: [1.0] - V3UnitD +# CHECK-NEXT: [1.1] - V3UnitD +# CHECK-NEXT: [2.0] - V3UnitFlg +# CHECK-NEXT: [2.1] - V3UnitFlg +# CHECK-NEXT: [2.2] - V3UnitFlg +# CHECK-NEXT: [2.3] - V3UnitFlg +# CHECK-NEXT: [3.0] - V3UnitL12 +# CHECK-NEXT: [3.1] - V3UnitL12 +# CHECK-NEXT: [4] - V3UnitLS0 +# CHECK-NEXT: [5] - V3UnitM0 +# CHECK-NEXT: [6] - V3UnitM1 +# CHECK-NEXT: [7] - V3UnitS0 +# CHECK-NEXT: [8] - V3UnitS1 +# CHECK-NEXT: [9] - V3UnitS2 +# CHECK-NEXT: [10] - V3UnitS3 +# CHECK-NEXT: [11] - V3UnitS4 +# CHECK-NEXT: [12] - V3UnitS5 +# CHECK-NEXT: [13] - V3UnitST1 +# CHECK-NEXT: [14] - V3UnitV0 +# CHECK-NEXT: [15] - V3UnitV1 +# CHECK-NEXT: [16] - V3UnitV2 +# CHECK-NEXT: [17] - V3UnitV3 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.25 2.25 2.25 2.25 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-neon-instructions.s index dc0d027021812..7e53aa03caf75 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-neon-instructions.s @@ -1,1234 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -mattr=+aes,+sha3,+sm4 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -addv s0, v0.4s -addv h0, v0.4h -addv h0, v0.8h -addv b0, v0.8b -addv b0, v0.16b -aesd v0.16b, v0.16b -aese v0.16b, v0.16b -aesimc v0.16b, v0.16b -aesmc v0.16b, v0.16b -and v0.8b, v0.8b, v0.8b -bfcvt h0, s0 -bfcvtn v0.4h, v0.4s -bfcvtn2 v0.8h, v0.4s -bfdot v0.2s, v0.4h, v0.4h -bfdot v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.h[3] -bfmlalt v0.4s, v0.8h, v0.8h -bfmlalt v0.4s, v0.8h, v0.h[3] -bfmmla v0.4s, v0.8h, v0.8h -bic v0.4h, #15, lsl #8 -bic v0.8b, v0.8b, v0.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -dup b0, v0.b[1] -dup d0, v0.d[1] -dup h0, v0.h[1] -dup s0, v0.s[1] -dup v0.16b, v0.b[1] -dup v0.2d, v0.d[1] -dup v0.2s, v0.s[1] -dup v0.4h, v0.h[1] -dup v0.4s, v0.s[1] -dup v0.8b, v0.b[1] -dup v0.8h, v0.h[1] -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd v0.4s, v0.4s, v0.4s -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt v0.2d, v0.2d, v0.2d -fadd v0.4s, v0.4s, v0.4s -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -fcadd v0.2s, v0.2s, v0.2s, 90 -fcadd v0.4s, v0.4s, v0.4s, 270 -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v0.4s, v0.4s, v0.4s -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmla v0.2s, v0.2s, v0.2s, #90 -fcmla v0.4s, v0.4s, v0.s[1], #0 -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas h12, h13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau h12, h13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms h22, h13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu h12, h13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns h22, h13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu h12, h13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps h22, h13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu h12, h13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs h21, h14 -fcvtzs h21, h12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu h12, h13 -fcvtzu h21, h12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fdiv v0.2d, v0.2d, v0.2d -fdiv v0.2s, v0.2s, v0.2s -fdiv v0.4h, v0.4h, v0.4h -fdiv v0.4s, v0.4s, v0.4s -fdiv v0.8h, v0.8h, v0.8h -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmaxv h0, v0.4h -fmaxv h0, v0.8h -fmaxv s0, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fmla d0, d1, v0.d[1] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmlal v0.2s, v0.2h, v0.h[1] -fmlal v0.4s, v0.4h, v0.h[3] -fmlal v0.2s, v0.2h, v0.2h -fmlal v0.4s, v0.4h, v0.4h -fmlal2 v0.2s, v0.2h, v0.h[1] -fmlal2 v0.4s, v0.4h, v0.h[3] -fmlal2 v0.2s, v0.2h, v0.2h -fmlal2 v0.4s, v0.4h, v0.4h -fmls d0, d4, v0.d[1] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmlsl v0.2s, v0.2h, v0.h[1] -fmlsl v0.4s, v0.4h, v0.h[3] -fmlsl v0.2s, v0.2h, v0.2h -fmlsl v0.4s, v0.4h, v0.4h -fmlsl2 v0.2s, v0.2h, v0.h[1] -fmlsl2 v0.4s, v0.4h, v0.h[3] -fmlsl2 v0.2s, v0.2h, v0.2h -fmlsl2 v0.4s, v0.4h, v0.4h -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecpx d16, d19 -frecpx s18, s10 -frint32x v0.2d, v0.2d -frint32x v0.2s, v0.2s -frint32x v0.4s, v0.4s -frint32z v0.2d, v0.2d -frint32z v0.2s, v0.2s -frint32z v0.4s, v0.4s -frint64x v0.2d, v0.2d -frint64x v0.2s, v0.2s -frint64x v0.4s, v0.4s -frint64z v0.2d, v0.2d -frint64z v0.2s, v0.2s -frint64z v0.4s, v0.4s -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrte v0.8h, v0.8h -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.4s, v1.4s }, [sp], #32 -ld1 { v0.4s, v1.4s, v2.4s }, [sp] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.8h }, [x15], x2 -ld1 { v0.8h, v1.8h }, [x15] -ld1 { v0.b }[9], [x0] -ld1 { v0.b }[9], [x0], #1 -ld1r { v0.16b }, [x0] -ld1r { v0.16b }, [x0], #1 -ld1r { v0.8h }, [x15] -ld1r { v0.8h }, [x15], #2 -ld2 { v0.16b, v1.16b }, [x0], x1 -ld2 { v0.8b, v1.8b }, [x0] -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], #4 -ld2r { v0.2d, v1.2d }, [x0] -ld2r { v0.2d, v1.2d }, [x0], #16 -ld2r { v0.4s, v1.4s }, [sp] -ld2r { v0.4s, v1.4s }, [sp], #8 -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3r { v0.4h, v1.4h, v2.4h }, [x15] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v0.8b, v1.8b, v2.8b }, [x0] -ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 -mla v0.8b, v0.8b, v0.8b -mls v0.4h, v0.4h, v0.4h -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orr v0.16b, v0.16b, v0.16b -orr v0.8h, #31 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddlv d0, v0.4s -saddlv s0, v0.4h -saddlv s0, v0.8h -saddlv h0, v0.8b -saddlv h0, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v0.8h, v0.8h -sdot v0.2s, v0.8b, v0.4b[2] -sdot v0.2s, v0.8b, v0.8b -sdot v0.4s, v0.16b, v0.16b -sdot v0.4s, v0.16b, v0.4b[2] -shadd v0.8b, v0.8b, v0.8b -shl d7, d10, #12 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.4s, v0.4s, #3 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v0.8b, v0.8b, v0.8b -smaxv b0, v0.8b -smaxv b0, v0.16b -smaxv h0, v0.4h -smaxv h0, v0.8h -smaxv s0, v0.4s -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -sminv b0, v0.8b -sminv b0, v0.16b -sminv h0, v0.4h -sminv h0, v0.8h -sminv s0, v0.4s -smlal v0.2d, v0.2s, v0.2s -smlal v0.4s, v0.4h, v0.4h -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v0.4s, v0.4h, v0.4h -smlsl v0.8h, v0.8b, v0.8b -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smmla v0.4s, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v0.4s, v0.4h, v0.4h -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v0.4s, v0.8h, v0.8h -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmlah h0, h1, v2.h[3] -sqrdmlah v0.4h, v1.4h, v2.h[3] -sqrdmlah v0.8h, v1.8h, v2.h[3] -sqrdmlah s0, s1, v2.s[1] -sqrdmlah v0.2s, v1.2s, v2.s[1] -sqrdmlah v0.4s, v1.4s, v2.s[1] -sqrdmlah h0, h1, h2 -sqrdmlah v0.4h, v1.4h, v2.4h -sqrdmlah v0.8h, v1.8h, v2.8h -sqrdmlah s0, s1, s2 -sqrdmlah v0.2s, v1.2s, v2.2s -sqrdmlah v0.4s, v1.4s, v2.4s -sqrdmlsh h0, h1, v2.h[3] -sqrdmlsh v0.4h, v1.4h, v2.h[3] -sqrdmlsh v0.8h, v1.8h, v2.h[3] -sqrdmlsh s0, s1, v2.s[1] -sqrdmlsh v0.2s, v1.2s, v2.s[1] -sqrdmlsh v0.4s, v1.4s, v2.s[1] -sqrdmlsh h0, h1, h2 -sqrdmlsh v0.4h, v1.4h, v2.4h -sqrdmlsh v0.8h, v1.8h, v2.8h -sqrdmlsh s0, s1, s2 -sqrdmlsh v0.2s, v1.2s, v2.2s -sqrdmlsh v0.4s, v1.4s, v2.4s -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v0.2d, v0.2s, #3 -sshll2 v0.4s, v0.8h, #3 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v0.16b }, [x0] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -sudot v0.2s, v0.8b, v0.4b[2] -sudot v0.4s, v0.16b, v0.4b[2] -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddlv d0, v0.4s -uaddlv s0, v0.4h -uaddlv s0, v0.8h -uaddlv h0, v0.8b -uaddlv h0, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v0.8h, v0.8h -udot v0.2s, v0.8b, v0.4b[2] -udot v0.2s, v0.8b, v0.8b -udot v0.4s, v0.16b, v0.16b -udot v0.4s, v0.16b, v0.4b[2] -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umaxv b0, v0.8b -umaxv b0, v0.16b -umaxv h0, v0.4h -umaxv h0, v0.8h -umaxv s0, v0.4s -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -uminp v0.2s, v0.2s, v0.2s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -uminv b0, v0.8b -uminv b0, v0.16b -uminv h0, v0.4h -uminv h0, v0.8h -uminv s0, v0.4s -umlal v0.2d, v0.2s, v0.2s -umlal v0.4s, v0.4h, v0.4h -umlal v0.8h, v0.8b, v0.8b -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v0.4s, v0.4h, v0.4h -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v0.8h, v0.16b, v0.16b -ummla v0.4s, v0.16b, v0.16b -umov w0, v0.b[1] -umov w0, v0.h[1] -umov w0, v0.s[1] -umov x0, v0.d[1] -umull v0.2d, v0.2s, v0.2s -umull v0.4s, v0.4h, v0.4h -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v0.4s, v0.8h, v0.8h -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd v0.8h, v0.8h, v0.8h -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urshl d8, d7, d4 -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -usdot v0.2s, v0.8b, v0.4b[2] -usdot v0.2s, v0.8b, v0.8b -usdot v0.4s, v0.16b, v0.16b -usdot v0.4s, v0.16b, v0.4b[2] -ushl d0, d0, d0 -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usmmla v0.4s, v0.16b, v0.16b -smov w0, v0.b[1] -smov w0, v0.h[1] -smov x0, v0.b[1] -smov x0, v0.h[1] -smov x0, v0.s[1] -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3 -mattr=+aes -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1255,8 +26,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: 1 2 0.25 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 addp d1, v14.2d # CHECK-NEXT: 1 3 0.50 addv s0, v0.4s # CHECK-NEXT: 1 3 0.50 addv h0, v0.4h # CHECK-NEXT: 2 5 0.50 addv h0, v0.8h @@ -1267,21 +40,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.50 bfcvt h0, s0 -# CHECK-NEXT: 2 4 1.00 bfcvtn v0.4h, v0.4s -# CHECK-NEXT: 2 4 1.00 bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: 1 5 0.25 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: 1 5 0.25 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 6 0.25 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: 1 2 0.25 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.25 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: 1 2 0.25 bic v24.2s, #70 +# CHECK-NEXT: 1 2 0.25 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: 1 2 0.25 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: 1 2 0.25 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: 1 2 0.25 cls v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 cls v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 cls v0.4h, v0.4h @@ -1294,28 +63,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 clz v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 clz v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 clz v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: 1 2 0.25 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: 1 2 0.25 cmeq d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: 1 2 0.25 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.25 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: 1 2 0.25 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: 1 2 0.25 cmge d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmge d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: 1 2 0.25 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: 1 2 0.25 cmgt d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: 1 2 0.25 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: 1 2 0.25 cmhi d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 cmhs d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: 1 2 0.25 cmle d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: 1 2 0.25 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: 1 2 0.25 cmlt d20, d21, #0 # CHECK-NEXT: 1 2 0.25 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: 1 2 0.25 cmtst d20, d21, d22 # CHECK-NEXT: 1 2 0.25 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.25 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: 1 2 0.25 cnt v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 cnt v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 dup v0.16b, w28 @@ -1341,7 +119,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.25 fabd d29, d24, d20 # CHECK-NEXT: 1 2 0.25 fabd s29, s24, s20 +# CHECK-NEXT: 1 2 0.25 fabd h27, h20, h17 +# CHECK-NEXT: 1 2 0.25 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: 1 2 0.25 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fabs h25, h7 # CHECK-NEXT: 1 2 0.25 fabs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fabs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fabs v0.4h, v0.4h @@ -1349,41 +130,67 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 facge d20, d21, d22 # CHECK-NEXT: 1 2 0.25 facge s10, s11, s12 +# CHECK-NEXT: 1 2 0.25 facge h24, h26, h29 +# CHECK-NEXT: 1 2 0.25 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: 1 2 0.25 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: 1 2 0.25 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 facgt d20, d21, d22 # CHECK-NEXT: 1 2 0.25 facgt s10, s11, s12 +# CHECK-NEXT: 1 2 0.25 facgt h0, h4, h10 # CHECK-NEXT: 1 2 0.25 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.25 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: 1 2 0.25 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: 1 2 0.25 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 faddp h10, v19.2h +# CHECK-NEXT: 1 2 0.25 faddp d11, v28.2d # CHECK-NEXT: 1 2 0.25 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 faddp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 2 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 2 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 2 0.25 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: 1 2 0.25 fcmeq h30, h6, h1 +# CHECK-NEXT: 1 2 0.25 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.25 fcmeq s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq s10, s11, s12 # CHECK-NEXT: 1 2 0.25 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.25 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: 1 2 0.25 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge h10, h23, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge h1, h16, h12 # CHECK-NEXT: 1 2 0.25 fcmge d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmge d20, d21, d22 # CHECK-NEXT: 1 2 0.25 fcmge s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmge s10, s11, s12 # CHECK-NEXT: 1 2 0.25 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: 1 2 0.25 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: 1 2 0.25 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmgt h4, h5, h0 +# CHECK-NEXT: 1 2 0.25 fcmgt h0, h18, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.25 fcmgt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt s10, s11, s12 # CHECK-NEXT: 1 2 0.25 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmgt v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 4 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 +# CHECK-NEXT: 1 2 0.25 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: 1 2 0.25 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmle h18, h28, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmlt h23, h7, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.25 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: 1 2 0.25 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: 1 3 0.50 fcvtas d21, d14 # CHECK-NEXT: 2 4 1.00 fcvtas s12, s13 # CHECK-NEXT: 4 6 2.00 fcvtas h12, h13 @@ -1470,9 +277,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 1.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 2 4 1.00 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: 2 4 1.00 fcvtzs v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 2.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: 1 3 0.50 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 3 0.50 fcvtzu d21, d14 # CHECK-NEXT: 2 4 1.00 fcvtzu s12, s13 @@ -1484,9 +293,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 1.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 2 4 1.00 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: 2 4 1.00 fcvtzu v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 2.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 fcvtzu v27.8h, v6.8h, #11 # CHECK-NEXT: 1 14 2.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 9 2.00 fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 9 4.00 fdiv v0.4h, v0.4h, v0.4h @@ -1498,12 +309,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fmaxnmp h25, v19.2h +# CHECK-NEXT: 1 2 0.25 fmaxnmp d17, v29.2d # CHECK-NEXT: 1 2 0.25 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: 3 6 0.75 fmaxnmv h12, v11.8h +# CHECK-NEXT: 2 4 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: 1 2 0.25 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fmaxp h15, v25.2h +# CHECK-NEXT: 1 2 0.25 fmaxp s6, v2.2s # CHECK-NEXT: 2 4 0.50 fmaxv h0, v0.4h # CHECK-NEXT: 3 6 0.75 fmaxv h0, v0.8h # CHECK-NEXT: 2 4 0.50 fmaxv s0, v0.4s @@ -1513,52 +331,71 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fminnmp h20, v14.2h +# CHECK-NEXT: 1 2 0.25 fminnmp d15, v8.2d # CHECK-NEXT: 1 2 0.25 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: 3 6 0.75 fminnmv h23, v17.8h +# CHECK-NEXT: 2 4 0.50 fminnmv s29, v17.4s # CHECK-NEXT: 1 2 0.25 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.25 fminp h7, v10.2h +# CHECK-NEXT: 1 2 0.25 fminp s17, v7.2s +# CHECK-NEXT: 2 4 0.50 fminv h3, v30.4h +# CHECK-NEXT: 3 6 0.75 fminv h29, v12.8h +# CHECK-NEXT: 2 4 0.50 fminv s16, v19.4s # CHECK-NEXT: 1 4 0.25 fmla d0, d1, v0.d[1] +# CHECK-NEXT: 1 4 0.25 fmla h23, h24, v15.h[4] # CHECK-NEXT: 1 4 0.25 fmla s0, s1, v0.s[3] # CHECK-NEXT: 1 4 0.25 fmla v0.2s, v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: 1 4 0.25 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: 1 4 0.25 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: 1 4 0.25 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: 1 4 0.25 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: 1 4 0.25 fmls d0, d4, v0.d[1] +# CHECK-NEXT: 1 4 0.25 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.25 fmls s3, s5, v0.s[3] # CHECK-NEXT: 1 4 0.25 fmls v0.2s, v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.25 fmlsl2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.25 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: 1 4 0.25 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: 1 4 0.25 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: 1 4 0.25 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: 1 4 0.25 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: 1 2 0.25 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.25 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.25 fmov v0.4s, #1.00000000 +# CHECK-NEXT: 1 3 0.25 fmul h18, h4, v7.h[3] +# CHECK-NEXT: 1 3 0.25 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: 1 3 0.25 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: 1 3 0.25 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: 1 3 0.25 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: 1 3 0.25 fmul h28, h14, h3 # CHECK-NEXT: 1 3 0.25 fmul d0, d1, v0.d[1] # CHECK-NEXT: 1 3 0.25 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.25 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.25 fmulx d0, d4, v0.d[1] # CHECK-NEXT: 1 2 0.25 fmulx d23, d11, d1 # CHECK-NEXT: 1 2 0.25 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.25 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: 1 2 0.25 fmulx h20, h25, h0 # CHECK-NEXT: 1 3 0.25 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.25 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.25 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: 1 3 0.25 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: 1 3 0.25 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.25 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.25 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: 1 3 0.25 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: 1 2 0.25 fneg v0.2d, v0.2d # CHECK-NEXT: 1 2 0.25 fneg v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 fneg v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 fneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 fneg v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 frecpe h20, h8 # CHECK-NEXT: 1 3 0.50 frecpe d13, d13 # CHECK-NEXT: 1 3 0.50 frecpe s19, s14 # CHECK-NEXT: 1 2 0.25 frecpe v0.2d, v0.2d @@ -1566,23 +403,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 frecpe v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 frecpe v0.4s, v0.4s # CHECK-NEXT: 4 6 2.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 frecps h29, h19, h8 +# CHECK-NEXT: 1 3 0.50 frecpx h18, h11 +# CHECK-NEXT: 1 4 0.25 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: 1 4 0.25 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.25 frecps d22, d30, d21 # CHECK-NEXT: 1 4 0.25 frecps s21, s16, s13 +# CHECK-NEXT: 1 4 0.25 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: 1 3 0.50 frecpx d16, d19 # CHECK-NEXT: 1 3 0.50 frecpx s18, s10 -# CHECK-NEXT: 1 3 0.50 frint32x v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint32x v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint32x v0.4s, v0.4s -# CHECK-NEXT: 1 3 0.50 frint32z v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint32z v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint32z v0.4s, v0.4s -# CHECK-NEXT: 1 3 0.50 frint64x v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint64x v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint64x v0.4s, v0.4s -# CHECK-NEXT: 1 3 0.50 frint64z v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 frint64z v0.2s, v0.2s -# CHECK-NEXT: 2 4 1.00 frint64z v0.4s, v0.4s # CHECK-NEXT: 1 3 0.50 frinta v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frinta v0.2s, v0.2s # CHECK-NEXT: 2 4 1.00 frinta v0.4h, v0.4h @@ -1618,13 +447,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 frintz v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 frintz v0.4s, v0.4s # CHECK-NEXT: 4 6 2.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 frsqrte h23, h26 # CHECK-NEXT: 1 3 0.50 frsqrte d21, d12 # CHECK-NEXT: 1 3 0.50 frsqrte s22, s13 # CHECK-NEXT: 1 2 0.25 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 0.50 frsqrte v0.2s, v0.2s # CHECK-NEXT: 2 4 1.00 frsqrte v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.25 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: 1 4 0.25 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: 4 6 2.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 frsqrts h28, h26, h1 # CHECK-NEXT: 1 4 0.25 frsqrts d8, d22, d18 # CHECK-NEXT: 1 4 0.25 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.25 frsqrts v0.2d, v0.2d, v0.2d @@ -1633,52 +466,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 9 4.00 fsqrt v0.4h, v0.4h # CHECK-NEXT: 1 11 4.00 fsqrt v0.4s, v0.4s # CHECK-NEXT: 1 13 8.00 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: 1 2 0.25 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 6 0.33 * ld1 { v0.16b }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: 3 6 1.00 * ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: 4 7 1.33 * ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: 1 6 0.33 * ld1 { v24.8h }, [x27] +# CHECK-NEXT: 2 6 0.67 * ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 3 6 1.00 * ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: 4 7 1.33 * ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.4s }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: 4 7 1.33 * ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: 4 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.2d }, [x28] +# CHECK-NEXT: 2 6 0.67 * ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: 3 6 1.00 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: 4 6 1.00 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: 2 6 0.67 * ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: 3 6 1.00 * ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: 4 7 1.33 * ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: 2 6 0.67 * ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: 3 6 1.00 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: 4 7 1.33 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: 3 6 0.67 * ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 7 1.33 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[7], [x0] +# CHECK-NEXT: 3 8 0.33 * ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: 2 8 0.33 * ld1 { v18.h }[3], [x1] +# CHECK-NEXT: 2 8 0.33 * ld1 { v0.s }[1], [x15] +# CHECK-NEXT: 3 8 0.33 * ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: 2 8 0.33 * ld1 { v11.d }[0], [x13] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 8 0.33 * ld1 { v0.b }[9], [x0] # CHECK-NEXT: 3 8 0.33 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.16b }, [x0] +# CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: 2 8 0.33 * ld1r { v0.4s }, [x15] +# CHECK-NEXT: 2 8 0.33 * ld1r { v3.1d }, [x15] +# CHECK-NEXT: 3 8 0.33 * ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: 2 8 0.33 * ld1r { v18.2d }, [x0] +# CHECK-NEXT: 2 8 0.33 * ld1r { v8.8b }, [x23] +# CHECK-NEXT: 2 8 0.33 * ld1r { v28.4h }, [x9] +# CHECK-NEXT: 2 8 0.33 * ld1r { v3.8h }, [x16] +# CHECK-NEXT: 2 8 0.33 * ld1r { v10.2s }, [x20] +# CHECK-NEXT: 3 8 0.50 * ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: 4 8 0.67 * ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: 3 8 0.50 * ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: 4 8 0.67 * ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: 4 8 0.67 * ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: 3 8 0.50 * ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: 3 8 0.50 * ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: 3 8 0.50 * ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: 4 8 0.67 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 3 8 0.50 * ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: 4 8 0.50 * ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: 3 8 0.33 * ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: 2 8 0.33 * ld1r { v0.8h }, [x15] # CHECK-NEXT: 3 8 0.33 * ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: 5 8 0.67 * ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 8 0.50 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 3 8 0.50 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: 4 8 0.50 * ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: 3 8 0.50 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 3 8 0.50 * ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: 4 8 0.50 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 3 8 0.50 * ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: 3 8 0.50 * ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: 3 8 0.50 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 3 8 0.50 * ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: 4 8 0.50 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 3 8 0.50 * ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: 3 8 0.50 * ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: 5 8 0.75 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: 6 8 1.00 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: 3 8 0.50 * ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: 4 8 0.50 * ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: 3 8 0.50 * ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: 4 8 0.50 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 5 8 0.75 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 6 8 1.00 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: 5 8 0.75 * ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: 6 8 1.00 * ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: 5 8 0.75 * ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: 5 8 0.75 * ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: 6 8 1.00 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: 7 8 1.00 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 5 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 6 8 0.75 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 5 8 0.75 * ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 6 8 1.00 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: 5 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 6 8 0.75 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 5 8 0.75 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: 6 8 1.00 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: 5 8 0.75 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 6 8 1.00 * ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: 6 8 0.75 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 5 8 0.75 * ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: 6 8 1.00 * ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: 7 8 1.00 * ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: 10 9 2.00 * ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: 7 8 1.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: 10 9 2.00 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: 10 9 2.00 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: 5 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: 6 8 0.75 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 11 9 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 7 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 10 9 2.00 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: 7 8 1.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: 7 8 1.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: 8 8 1.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 8 8 1.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 7 8 1.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: 7 8 1.00 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: 8 8 1.33 * ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: 7 8 1.00 * ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: 7 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 8 8 1.33 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 8 8 1.33 * ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: 7 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 8 8 1.33 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: 9 8 1.33 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 8 8 1.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: 7 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 8 8 1.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 4 0.50 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: 1 4 0.50 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: 1 4 0.50 mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: 1 4 0.50 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: 1 4 0.50 mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: 1 2 0.25 mov b0, v0.b[15] # CHECK-NEXT: 1 2 0.25 mov d6, v0.d[1] # CHECK-NEXT: 1 2 0.25 mov h2, v0.h[5] # CHECK-NEXT: 1 2 0.25 mov s17, v0.s[2] +# CHECK-NEXT: 2 2 1.00 mov w8, v8.s[0] +# CHECK-NEXT: 2 2 1.00 mov x30, v18.d[0] # CHECK-NEXT: 1 2 0.25 mov v2.b[0], v0.b[0] # CHECK-NEXT: 1 2 0.25 mov v2.h[1], v0.h[1] # CHECK-NEXT: 1 2 0.25 mov v2.s[2], v0.s[2] @@ -1691,11 +635,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 mov v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: 1 2 0.25 movi v0.16b, #31 +# CHECK-NEXT: 1 2 0.25 movi v14.8h, #174 +# CHECK-NEXT: 1 2 0.25 movi v13.4h, #74, lsl #8 # CHECK-NEXT: 1 2 0.25 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: 1 2 0.25 movi v0.2s, #8, msl #8 +# CHECK-NEXT: 1 2 0.25 movi v19.2s, #226 +# CHECK-NEXT: 1 2 0.25 movi v1.4s, #122, msl #8 # CHECK-NEXT: 1 2 0.25 movi v0.4s, #255, lsl #24 # CHECK-NEXT: 1 2 0.25 movi v0.8b, #255 # CHECK-NEXT: 1 4 0.50 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: 1 4 0.50 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: 1 4 0.50 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: 1 4 0.50 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: 1 4 0.50 mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: 1 4 0.50 mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: 1 2 0.25 mvni v9.4h, #237 +# CHECK-NEXT: 1 2 0.25 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: 1 2 0.25 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: 1 2 0.25 mvni v0.2s, #0 # CHECK-NEXT: 1 2 0.25 mvni v0.4s, #16, msl #16 # CHECK-NEXT: 1 2 0.25 neg d29, d24 @@ -1709,8 +666,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 mvn v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 mvn v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.25 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: 1 2 0.25 mov v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.25 orr v9.4h, #18 # CHECK-NEXT: 1 2 0.25 orr v0.8h, #31 +# CHECK-NEXT: 1 2 0.25 orr v4.4s, #0 # CHECK-NEXT: 1 3 0.25 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 pmull v0.8h, v0.8b, v0.8b @@ -1755,6 +715,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: 1 2 0.25 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 sabdl v0.8h, v0.8b, v0.8b @@ -1790,6 +751,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.25 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 4 6 2.00 scvtf h4, h8, #9 +# CHECK-NEXT: 4 6 2.00 scvtf h5, h14 # CHECK-NEXT: 1 3 0.50 scvtf d21, d12 # CHECK-NEXT: 1 3 0.50 scvtf d21, d12, #64 # CHECK-NEXT: 2 4 1.00 scvtf s22, s13 @@ -1801,26 +764,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 scvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 scvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 1.00 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: 4 6 2.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 scvtf v4.8h, v8.8h, #10 # CHECK-NEXT: 1 3 0.25 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.25 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: 1 2 0.25 shl d7, d10, #12 +# CHECK-NEXT: 1 2 0.25 shl v23.8b, v18.8b, #6 # CHECK-NEXT: 1 2 0.25 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.25 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.25 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 2 0.25 shl v0.8h, v23.8h, #10 # CHECK-NEXT: 1 2 0.25 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: 1 2 0.25 shll v0.2d, v0.2s, #32 # CHECK-NEXT: 1 2 0.25 shll v0.4s, v0.4h, #16 # CHECK-NEXT: 1 2 0.25 shll v0.8h, v0.8b, #8 # CHECK-NEXT: 1 2 0.25 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: 1 2 0.25 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: 1 2 0.25 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: 1 2 0.25 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: 1 2 0.25 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: 1 2 0.25 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: 1 2 0.25 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: 1 2 0.25 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: 1 2 0.25 shll2 v0.8h, v0.16b, #8 @@ -1832,6 +794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.25 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: 1 2 0.25 sli d10, d14, #12 # CHECK-NEXT: 1 2 0.25 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.25 sli v0.2d, v0.2d, #3 @@ -1843,8 +806,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: 1 2 0.25 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: 1 2 0.25 smaxp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 2 5 0.50 smaxv b0, v0.8b # CHECK-NEXT: 2 6 1.00 smaxv b0, v0.16b @@ -1863,23 +828,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 5 0.50 sminv h0, v0.8h # CHECK-NEXT: 1 3 0.50 sminv s0, v0.4s # CHECK-NEXT: 1 4 0.50 smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: 1 4 0.50 smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: 1 4 0.50 smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 0.50 smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: 1 4 0.50 smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: 1 4 0.50 smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: 1 4 0.50 smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: 1 4 0.50 smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: 1 4 0.50 smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 0.50 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 0.50 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 3 0.50 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 0.50 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: 1 3 0.50 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: 1 3 0.50 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: 1 3 0.50 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sqabs b19, b14 # CHECK-NEXT: 1 2 0.25 sqabs d18, d12 @@ -1893,6 +869,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 sqabs v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 sqabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 sqadd b20, b11, b15 +# CHECK-NEXT: 1 2 0.25 sqadd h12, h18, h10 # CHECK-NEXT: 1 2 0.25 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 sqdmlal d19, s24, s12 @@ -1900,17 +877,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: 1 4 0.50 sqdmlal s17, h27, h12 # CHECK-NEXT: 1 4 0.50 sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: 1 4 0.50 sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: 1 4 0.50 sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: 1 4 0.50 sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: 1 4 0.50 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: 1 4 0.50 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: 1 3 0.50 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: 1 3 0.50 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: 1 3 0.50 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: 1 3 0.50 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: 1 4 0.50 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: 1 4 0.50 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: 1 4 0.50 sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: 1 4 0.50 sqdmlsl d12, s23, s13 # CHECK-NEXT: 1 4 0.50 sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: 1 4 0.50 sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: 1 4 0.50 sqdmlsl s14, h12, h25 # CHECK-NEXT: 1 4 0.50 sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: 1 4 0.50 sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: 1 4 0.50 sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: 1 4 0.50 sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: 1 4 0.50 sqdmulh h10, h11, h12 # CHECK-NEXT: 1 4 0.50 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 0.50 sqdmulh s15, s14, v0.s[1] @@ -1971,6 +965,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.25 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.25 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.25 sqshl s17, s4, s23 +# CHECK-NEXT: 1 2 0.25 sqsub b3, b13, b12 +# CHECK-NEXT: 1 2 0.25 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: 1 4 0.25 sqrshrn b10, h13, #2 # CHECK-NEXT: 1 4 0.25 sqrshrn h15, s10, #6 # CHECK-NEXT: 1 4 0.25 sqrshrn s15, d12, #9 @@ -1996,6 +993,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 sqshl h3, h4, h15 # CHECK-NEXT: 1 4 0.25 sqshl s14, s17, #22 # CHECK-NEXT: 1 4 0.25 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: 1 4 0.25 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: 1 4 0.25 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.25 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 0.25 sqshl v0.2s, v0.2s, v0.2s @@ -2092,8 +1090,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: 1 2 0.25 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: 1 2 0.25 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: 1 2 0.25 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: 1 2 0.25 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: 1 2 0.25 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: 1 2 0.25 sshr d15, d16, #12 # CHECK-NEXT: 1 2 0.25 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.25 sshr v0.2d, v0.2d, #3 @@ -2122,32 +1124,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.25 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 2 0.50 * st1 { v18.8b }, [x15] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: 6 2 1.50 * st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: 8 2 2.00 * st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: 2 2 0.50 * st1 { v19.4h }, [x7] +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: 4 2 1.00 * st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: 4 2 1.00 * st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: 2 2 0.50 * st1 { v27.8h }, [x17] +# CHECK-NEXT: 6 2 1.50 * st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: 8 2 2.00 * st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v25.2s }, [x6] +# CHECK-NEXT: 2 2 0.50 * st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: 4 2 1.00 * st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4s }, [x19] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: 8 2 2.00 * st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: 2 2 0.50 * st1 { v20.1d }, [x10] +# CHECK-NEXT: 2 2 0.50 * st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: 4 2 1.00 * st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: 4 2 1.00 * st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: 7 2 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 6 2 1.50 * st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: 8 2 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 6 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 3 4 1.00 * st1 { v1.b }[5], [x1] +# CHECK-NEXT: 3 4 1.00 * st1 { v0.h }[2], [x1] +# CHECK-NEXT: 3 4 1.00 * st1 { v31.s }[1], [x16] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 3 4 1.00 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 4 4 1.00 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 7 4 2.00 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 4 1.00 * st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 6 4 2.00 * st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: 3 4 1.00 * st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: 6 4 2.00 * st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: 3 4 1.00 * st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: 6 4 2.00 * st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: 6 4 2.00 * st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: 3 4 1.00 * st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: 3 4 1.00 * st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: 3 4 1.00 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 4 4 1.00 * st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: 3 4 1.00 * st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: 6 5 2.00 * st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: 9 6 3.00 * st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: 6 5 2.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 10 6 3.00 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 9 6 3.00 * st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: 6 5 2.00 * st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: 9 6 3.00 * st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: 9 6 3.00 * st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: 6 5 2.00 * st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: 6 5 2.00 * st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: 7 5 2.00 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 6 5 2.00 * st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: 6 5 2.00 * st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: 8 6 3.00 * st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: 16 7 6.00 * st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: 8 6 3.00 * st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: 16 7 6.00 * st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: 8 6 3.00 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 17 7 6.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 16 7 6.00 * st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: 12 5 4.00 * st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: 4 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 4 6 1.50 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: 4 6 1.50 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: 6 4 2.00 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: 4 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: 5 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: 7 4 2.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.25 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.25 sub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.25 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 2 0.25 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: 1 2 0.25 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: 1 2 0.25 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: 1 2 0.25 suqadd b19, b14 # CHECK-NEXT: 1 2 0.25 suqadd d18, d22 # CHECK-NEXT: 1 2 0.25 suqadd h20, h15 @@ -2190,6 +1256,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.25 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.25 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: 1 4 0.25 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.25 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.25 uabal v0.8h, v0.8b, v0.8b @@ -2197,6 +1264,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: 1 2 0.25 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 uabdl v0.8h, v0.8b, v0.8b @@ -2232,8 +1300,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.25 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.25 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 ucvtf h17, x12 +# CHECK-NEXT: 4 6 2.00 ucvtf h22, h16, #11 +# CHECK-NEXT: 4 6 2.00 ucvtf h7, h21 # CHECK-NEXT: 1 3 0.50 ucvtf d21, d14 # CHECK-NEXT: 1 3 0.50 ucvtf d21, d14, #64 +# CHECK-NEXT: 1 3 1.00 ucvtf s8, x0 # CHECK-NEXT: 2 4 1.00 ucvtf s22, s13 # CHECK-NEXT: 2 4 1.00 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 0.50 ucvtf v0.2d, v0.2d @@ -2243,13 +1315,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 1.00 ucvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 1.00 ucvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 1.00 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 1.00 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: 4 6 2.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 4 6 2.00 ucvtf v22.8h, v20.8h, #10 # CHECK-NEXT: 1 3 0.25 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.25 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.25 udot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.25 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: 1 2 0.25 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 umax v0.4s, v0.4s, v0.4s @@ -2265,7 +1340,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.25 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.25 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: 1 2 0.25 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.25 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: 1 2 0.25 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.25 uminp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 2 5 0.50 uminv b0, v0.8b @@ -2274,35 +1351,50 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 5 0.50 uminv h0, v0.8h # CHECK-NEXT: 1 3 0.50 uminv s0, v0.4s # CHECK-NEXT: 1 4 0.50 umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: 1 4 0.50 umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: 1 4 0.50 umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: 1 4 0.50 umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: 1 4 0.50 umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 0.50 umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: 1 4 0.50 umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: 1 4 0.50 umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 0.50 umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: 1 4 0.50 umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 0.50 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 0.50 umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 2 2 1.00 umov w6, v22.b[0] # CHECK-NEXT: 2 2 1.00 umov w0, v0.b[1] +# CHECK-NEXT: 2 2 1.00 umov w10, v25.h[0] # CHECK-NEXT: 2 2 1.00 umov w0, v0.h[1] # CHECK-NEXT: 2 2 1.00 mov w0, v0.s[1] # CHECK-NEXT: 2 2 1.00 mov x0, v0.d[1] # CHECK-NEXT: 1 3 0.50 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 0.50 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: 1 3 0.50 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 0.50 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: 1 3 0.50 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: 1 3 0.50 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 0.50 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: 1 3 0.50 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 uqadd h0, h1, h5 +# CHECK-NEXT: 1 2 0.25 uqadd s0, s24, s30 # CHECK-NEXT: 1 2 0.25 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: 1 4 0.25 uqrshl b11, b20, b30 # CHECK-NEXT: 1 4 0.25 uqrshl s23, s20, s16 +# CHECK-NEXT: 1 4 0.25 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: 1 4 0.25 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.25 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 0.25 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.25 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 uqrshrn b10, h12, #5 # CHECK-NEXT: 1 4 0.25 uqrshrn h12, s10, #14 @@ -2325,6 +1417,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.25 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 0.25 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 4 0.25 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: 1 4 0.25 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.25 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.25 uqshl v0.8b, v0.8b, #3 @@ -2339,8 +1432,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 0.25 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 0.25 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 2 0.25 uqsub s16, s21, s6 # CHECK-NEXT: 1 2 0.25 uqsub d16, d16, d16 # CHECK-NEXT: 1 2 0.25 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.25 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: 1 4 0.25 uqxtn b18, h18 # CHECK-NEXT: 1 4 0.25 uqxtn h20, s17 # CHECK-NEXT: 1 4 0.25 uqxtn s19, d14 @@ -2355,7 +1450,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.25 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: 1 4 0.25 urshl d8, d7, d4 +# CHECK-NEXT: 1 4 0.25 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: 1 4 0.25 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.25 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.25 urshl v0.4s, v0.4s, v0.4s @@ -2378,15 +1475,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.25 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.25 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.25 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.25 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.25 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.25 ushl d0, d0, d0 +# CHECK-NEXT: 1 2 0.25 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 0.25 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.25 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.25 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: 1 2 0.25 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: 1 2 0.25 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: 1 2 0.25 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: 1 2 0.25 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: 1 2 0.25 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: 1 2 0.25 ushr d10, d17, #18 # CHECK-NEXT: 1 2 0.25 ushr v0.16b, v0.16b, #3 @@ -2396,7 +1494,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.25 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 0.25 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.25 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.25 usmmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 2 2 1.00 U smov w15, v22.b[0] +# CHECK-NEXT: 2 2 1.00 U smov w26, v27.h[0] +# CHECK-NEXT: 2 2 1.00 U smov x21, v0.b[0] +# CHECK-NEXT: 2 2 1.00 U smov x9, v27.h[0] +# CHECK-NEXT: 2 2 1.00 U smov x15, v3.s[0] # CHECK-NEXT: 2 2 1.00 smov w0, v0.b[1] # CHECK-NEXT: 2 2 1.00 smov w0, v0.h[1] # CHECK-NEXT: 2 2 1.00 smov x0, v0.b[1] @@ -2497,7 +1599,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] -# CHECK-NEXT: - - - - - - - - - 27.33 27.33 48.83 14.88 3.88 3.88 3.88 3.88 3.88 3.88 3.88 21.50 525.00 340.50 478.50 254.00 +# CHECK-NEXT: - - - - - - - - - 106.00 106.00 189.00 19.13 6.13 6.13 6.13 6.13 6.13 6.13 6.13 83.00 750.00 528.50 591.00 329.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] Instructions: @@ -2517,8 +1619,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp d1, v14.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 addv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 addv h0, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv h0, v0.8h @@ -2529,21 +1633,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt h0, s0 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic v24.2s, #70 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.4h, v0.4h @@ -2556,28 +1656,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhi d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhs d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmle d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmlt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmtst d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - - - dup v0.16b, w28 @@ -2603,7 +1712,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd d29, d24, d20 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd s29, s24, s20 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd h27, h20, h17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs h25, h7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.4h, v0.4h @@ -2611,41 +1723,67 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge h24, h26, h29 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt h0, h4, h10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp h10, v19.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp d11, v28.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq h30, h6, h1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge h10, h23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge h1, h16, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt h4, h5, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt h0, h18, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla v0.4s, v0.4s, v0.s[1], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmle h18, h28, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt h23, h7, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas h12, h13 @@ -2732,9 +1870,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s12, s13 @@ -2746,9 +1886,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu v27.8h, v6.8h, #11 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 2.00 - - fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 2.00 - - fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 4.00 - - fdiv v0.4h, v0.4h, v0.4h @@ -2760,12 +1902,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp h25, v19.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp d17, v29.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxnmv h0, v13.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxnmv h12, v11.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxnmv s28, v31.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp h15, v25.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp s6, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxv h0, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxv s0, v0.4s @@ -2775,52 +1924,71 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp h20, v14.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp d15, v8.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminnmv h19, v25.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminnmv h23, v17.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminnmv s29, v17.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp h7, v10.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp s17, v7.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminv h3, v30.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminv h29, v12.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminv s16, v19.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla d0, d1, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla h23, h24, v15.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls d0, d4, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlsl2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov v0.4s, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul h18, h4, v7.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul h28, h14, h3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul d0, d1, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx d23, d11, d1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx s20, s22, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx h20, h25, h0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe h20, h8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe s19, s14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecpe v0.2d, v0.2d @@ -2828,23 +1996,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps h29, h19, h8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx h18, h11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps s21, s16, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx d16, d19 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx s18, s10 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32x v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32x v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint32z v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint32z v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64x v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64x v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frint64z v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frint64z v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4h, v0.4h @@ -2880,13 +2040,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte h23, h26 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte s22, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts h28, h26, h1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts v0.2d, v0.2d, v0.2d @@ -2895,52 +2059,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 4.00 - - fsqrt v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 4.00 - - fsqrt v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 8.00 - - fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - - - ld1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - - - ld1 { v24.8h }, [x27] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - - - ld1 { v3.4s }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - - - ld1 { v3.2d }, [x28] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1 { v0.b }[7], [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1 { v18.h }[3], [x1] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1 { v0.s }[1], [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1 { v11.d }[0], [x13] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - - - ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - - - ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1 { v0.b }[9], [x0] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v0.4s }, [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v3.1d }, [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v18.2d }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v8.8b }, [x23] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v28.4h }, [x9] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v3.8h }, [x16] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v10.2s }, [x20] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x15] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.25 0.25 0.25 0.25 ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 0.50 0.50 ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 0.50 0.50 ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.75 0.75 0.75 0.75 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.75 0.75 0.75 0.75 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.75 0.75 0.75 0.75 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.75 0.75 0.75 0.75 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.75 0.75 0.75 0.75 ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 1.00 1.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov b0, v0.b[15] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov d6, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov h2, v0.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov s17, v0.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - mov w8, v8.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - mov x30, v18.d[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.b[0], v0.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.h[1], v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.s[2], v0.s[2] @@ -2953,11 +2228,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.16b, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v14.8h, #174 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v13.4h, #74, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.2s, #8, msl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v19.2s, #226 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v1.4s, #122, msl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.4s, #255, lsl #24 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movi v0.8b, #255 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v9.4h, #237 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvni v0.4s, #16, msl #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg d29, d24 @@ -2971,8 +2259,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvn v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mvn v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v9.4h, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v0.8h, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v4.4s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 pmull v0.8h, v0.8b, v0.8b @@ -3017,6 +2308,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl v0.8h, v0.8b, v0.8b @@ -3052,6 +2344,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf h4, h8, #9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf h5, h14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf d21, d12, #64 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13 @@ -3063,26 +2357,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v4.8h, v8.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl v23.8b, v18.8b, #6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl v0.8h, v23.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll v0.2d, v0.2s, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll v0.4s, v0.4h, #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll v0.8h, v0.8b, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shll2 v0.8h, v0.16b, #8 @@ -3094,6 +2387,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sli v0.2d, v0.2d, #3 @@ -3105,8 +2399,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 smaxv b0, v0.16b @@ -3125,23 +2421,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs d18, d12 @@ -3155,6 +2462,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd b20, b11, b15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd h12, h18, h10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal d19, s24, s12 @@ -3162,17 +2470,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal s17, h27, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl d12, s23, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl s14, h12, h25 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh s15, s14, v0.s[1] @@ -3233,6 +2558,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl s17, s4, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub b3, b13, b12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrn b10, h13, #2 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrn h15, s10, #6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrn s15, d12, #9 @@ -3258,6 +2586,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl h3, h4, h15 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl s14, s17, #22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshl v0.2s, v0.2s, v0.2s @@ -3354,8 +2683,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sshr v0.2d, v0.2d, #3 @@ -3384,32 +2717,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v18.8b }, [x15] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 - - st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 - - st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v19.4h }, [x7] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v27.8h }, [x17] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 - - st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 - - st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v25.2s }, [x6] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 1.00 1.00 - - st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v22.4s }, [x19] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 - - st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v20.1d }, [x10] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: - - - - - - - - - - - 1.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.50 1.50 1.50 - - st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 - - st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 - - st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 - - st1 { v8.2d }, [x15] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 0.50 0.50 - - st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 1.00 1.00 - - st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 - - st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 1.00 1.00 - - st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st1 { v1.b }[5], [x1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st1 { v0.h }[2], [x1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st1 { v31.s }[1], [x16] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 0.50 0.50 - - st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 - - st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 1.00 1.00 - - st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 2.00 2.00 - - st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 1.00 1.00 - - st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 - - st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 - - st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - - - - - 1.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.50 3.00 3.00 - - st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 - - st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 - - st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 - - st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 2.00 2.00 - - st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 3.00 3.00 - - st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 6.00 6.00 - - st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 3.00 3.00 - - st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 6.00 6.00 - - st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 3.00 3.00 - - st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - - - - 2.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 2.00 6.00 6.00 - - st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 6.00 6.00 - - st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 4.00 4.00 - - st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 - - st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 - - st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 - - st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 2.00 2.00 - - st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd h20, h15 @@ -3452,6 +2849,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabal v0.8h, v0.8b, v0.8b @@ -3459,6 +2857,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl v0.8h, v0.8b, v0.8b @@ -3494,8 +2893,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - - - ucvtf h17, x12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf h22, h16, #11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf h7, h21 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - - - ucvtf s8, x0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf s22, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d @@ -3505,13 +2908,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v22.8h, v20.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.4s, v0.4s, v0.4s @@ -3527,7 +2933,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uminv b0, v0.8b @@ -3536,35 +2944,50 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w6, v22.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w10, v25.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - umov w0, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - mov w0, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 - 0.50 - umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd h0, h1, h5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd s0, s24, s30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl b11, b20, b30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn b10, h12, #5 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn h12, s10, #14 @@ -3587,6 +3010,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshl v0.8b, v0.8b, #3 @@ -3601,8 +3025,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub s16, s21, s6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub d16, d16, d16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqxtn b18, h18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqxtn h20, s17 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqxtn s19, d14 @@ -3617,7 +3043,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshl d8, d7, d4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshl v0.4s, v0.4s, v0.4s @@ -3640,15 +3068,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushl d0, d0, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr v0.16b, v0.16b, #3 @@ -3658,7 +3087,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w15, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w26, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x21, v0.b[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x9, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x15, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w0, v0.b[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov w0, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 - - smov x0, v0.b[1] diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-bf16-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-bf16-instructions.s new file mode 100644 index 0000000000000..e244e0d641193 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-bf16-instructions.s @@ -0,0 +1,66 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -instruction-tables < %p/Inputs/bf16-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 1.00 bfcvt h0, s0 +# CHECK-NEXT: 2 4 2.00 bfcvtn v0.4h, v0.4s +# CHECK-NEXT: 2 4 2.00 bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: 1 2 0.50 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: 1 5 0.50 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: 1 5 0.50 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.50 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 5 0.50 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 5 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: 1 6 0.50 bfmmla v0.4s, v0.8h, v0.8h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3AEUnitB +# CHECK-NEXT: [0.1] - V3AEUnitB +# CHECK-NEXT: [0.2] - V3AEUnitB +# CHECK-NEXT: [1.0] - V3AEUnitD +# CHECK-NEXT: [1.1] - V3AEUnitD +# CHECK-NEXT: [2.0] - V3AEUnitFlg +# CHECK-NEXT: [2.1] - V3AEUnitFlg +# CHECK-NEXT: [2.2] - V3AEUnitFlg +# CHECK-NEXT: [2.3] - V3AEUnitFlg +# CHECK-NEXT: [3.0] - V3AEUnitL12 +# CHECK-NEXT: [3.1] - V3AEUnitL12 +# CHECK-NEXT: [4] - V3AEUnitLS0 +# CHECK-NEXT: [5] - V3AEUnitM0 +# CHECK-NEXT: [6] - V3AEUnitM1 +# CHECK-NEXT: [7] - V3AEUnitS0 +# CHECK-NEXT: [8] - V3AEUnitS1 +# CHECK-NEXT: [9] - V3AEUnitS2 +# CHECK-NEXT: [10] - V3AEUnitS3 +# CHECK-NEXT: [11] - V3AEUnitS4 +# CHECK-NEXT: [12] - V3AEUnitS5 +# CHECK-NEXT: [13] - V3AEUnitST1 +# CHECK-NEXT: [14] - V3AEUnitV0 +# CHECK-NEXT: [15] - V3AEUnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 9.00 4.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - bfcvt h0, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - bfcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - bfcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v24.4h, v14.2h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfdot v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmmla v0.4s, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-complxnum-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-complxnum-instructions.s new file mode 100644 index 0000000000000..eb4e5918b078a --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-complxnum-instructions.s @@ -0,0 +1,52 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -instruction-tables < %p/Inputs/complxnum-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 2 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 2 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 4 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: 1 4 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3AEUnitB +# CHECK-NEXT: [0.1] - V3AEUnitB +# CHECK-NEXT: [0.2] - V3AEUnitB +# CHECK-NEXT: [1.0] - V3AEUnitD +# CHECK-NEXT: [1.1] - V3AEUnitD +# CHECK-NEXT: [2.0] - V3AEUnitFlg +# CHECK-NEXT: [2.1] - V3AEUnitFlg +# CHECK-NEXT: [2.2] - V3AEUnitFlg +# CHECK-NEXT: [2.3] - V3AEUnitFlg +# CHECK-NEXT: [3.0] - V3AEUnitL12 +# CHECK-NEXT: [3.1] - V3AEUnitL12 +# CHECK-NEXT: [4] - V3AEUnitLS0 +# CHECK-NEXT: [5] - V3AEUnitM0 +# CHECK-NEXT: [6] - V3AEUnitM1 +# CHECK-NEXT: [7] - V3AEUnitS0 +# CHECK-NEXT: [8] - V3AEUnitS1 +# CHECK-NEXT: [9] - V3AEUnitS2 +# CHECK-NEXT: [10] - V3AEUnitS3 +# CHECK-NEXT: [11] - V3AEUnitS4 +# CHECK-NEXT: [12] - V3AEUnitS5 +# CHECK-NEXT: [13] - V3AEUnitST1 +# CHECK-NEXT: [14] - V3AEUnitV0 +# CHECK-NEXT: [15] - V3AEUnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-fp16fml-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-fp16fml-instructions.s new file mode 100644 index 0000000000000..d853614b37b18 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-fp16fml-instructions.s @@ -0,0 +1,76 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -instruction-tables < %p/Inputs/fp16fml-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 4 0.50 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.50 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.50 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.50 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.50 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.4s, v0.4h, v0.4h + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3AEUnitB +# CHECK-NEXT: [0.1] - V3AEUnitB +# CHECK-NEXT: [0.2] - V3AEUnitB +# CHECK-NEXT: [1.0] - V3AEUnitD +# CHECK-NEXT: [1.1] - V3AEUnitD +# CHECK-NEXT: [2.0] - V3AEUnitFlg +# CHECK-NEXT: [2.1] - V3AEUnitFlg +# CHECK-NEXT: [2.2] - V3AEUnitFlg +# CHECK-NEXT: [2.3] - V3AEUnitFlg +# CHECK-NEXT: [3.0] - V3AEUnitL12 +# CHECK-NEXT: [3.1] - V3AEUnitL12 +# CHECK-NEXT: [4] - V3AEUnitLS0 +# CHECK-NEXT: [5] - V3AEUnitM0 +# CHECK-NEXT: [6] - V3AEUnitM1 +# CHECK-NEXT: [7] - V3AEUnitS0 +# CHECK-NEXT: [8] - V3AEUnitS1 +# CHECK-NEXT: [9] - V3AEUnitS2 +# CHECK-NEXT: [10] - V3AEUnitS3 +# CHECK-NEXT: [11] - V3AEUnitS4 +# CHECK-NEXT: [12] - V3AEUnitS5 +# CHECK-NEXT: [13] - V3AEUnitST1 +# CHECK-NEXT: [14] - V3AEUnitV0 +# CHECK-NEXT: [15] - V3AEUnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 8.00 8.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.4h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-fptoint-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-fptoint-instructions.s new file mode 100644 index 0000000000000..4056a20f685d9 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-fptoint-instructions.s @@ -0,0 +1,68 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -instruction-tables < %p/Inputs/fptoint-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 1.00 frint32x v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint32x v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint32x v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint32z v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint32z v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint32z v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint64x v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint64x v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint64x v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 frint64z v0.2d, v0.2d +# CHECK-NEXT: 1 3 1.00 frint64z v0.2s, v0.2s +# CHECK-NEXT: 2 4 2.00 frint64z v0.4s, v0.4s + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3AEUnitB +# CHECK-NEXT: [0.1] - V3AEUnitB +# CHECK-NEXT: [0.2] - V3AEUnitB +# CHECK-NEXT: [1.0] - V3AEUnitD +# CHECK-NEXT: [1.1] - V3AEUnitD +# CHECK-NEXT: [2.0] - V3AEUnitFlg +# CHECK-NEXT: [2.1] - V3AEUnitFlg +# CHECK-NEXT: [2.2] - V3AEUnitFlg +# CHECK-NEXT: [2.3] - V3AEUnitFlg +# CHECK-NEXT: [3.0] - V3AEUnitL12 +# CHECK-NEXT: [3.1] - V3AEUnitL12 +# CHECK-NEXT: [4] - V3AEUnitLS0 +# CHECK-NEXT: [5] - V3AEUnitM0 +# CHECK-NEXT: [6] - V3AEUnitM1 +# CHECK-NEXT: [7] - V3AEUnitS0 +# CHECK-NEXT: [8] - V3AEUnitS1 +# CHECK-NEXT: [9] - V3AEUnitS2 +# CHECK-NEXT: [10] - V3AEUnitS3 +# CHECK-NEXT: [11] - V3AEUnitS4 +# CHECK-NEXT: [12] - V3AEUnitS5 +# CHECK-NEXT: [13] - V3AEUnitST1 +# CHECK-NEXT: [14] - V3AEUnitV0 +# CHECK-NEXT: [15] - V3AEUnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 16.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint32x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint32z v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64x v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64x v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint64x v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64z v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64z v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint64z v0.4s, v0.4s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-i8mm-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-i8mm-instructions.s new file mode 100644 index 0000000000000..0d30c25862838 --- /dev/null +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-i8mm-instructions.s @@ -0,0 +1,62 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -instruction-tables < %p/Inputs/i8mm-instructions.s | FileCheck %s + +# CHECK: Instruction Info: +# CHECK-NEXT: [1]: #uOps +# CHECK-NEXT: [2]: Latency +# CHECK-NEXT: [3]: RThroughput +# CHECK-NEXT: [4]: MayLoad +# CHECK-NEXT: [5]: MayStore +# CHECK-NEXT: [6]: HasSideEffects (U) + +# CHECK: [1] [2] [3] [4] [5] [6] Instructions: +# CHECK-NEXT: 1 3 0.50 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 3 0.50 usmmla v0.4s, v0.16b, v0.16b + +# CHECK: Resources: +# CHECK-NEXT: [0.0] - V3AEUnitB +# CHECK-NEXT: [0.1] - V3AEUnitB +# CHECK-NEXT: [0.2] - V3AEUnitB +# CHECK-NEXT: [1.0] - V3AEUnitD +# CHECK-NEXT: [1.1] - V3AEUnitD +# CHECK-NEXT: [2.0] - V3AEUnitFlg +# CHECK-NEXT: [2.1] - V3AEUnitFlg +# CHECK-NEXT: [2.2] - V3AEUnitFlg +# CHECK-NEXT: [2.3] - V3AEUnitFlg +# CHECK-NEXT: [3.0] - V3AEUnitL12 +# CHECK-NEXT: [3.1] - V3AEUnitL12 +# CHECK-NEXT: [4] - V3AEUnitLS0 +# CHECK-NEXT: [5] - V3AEUnitM0 +# CHECK-NEXT: [6] - V3AEUnitM1 +# CHECK-NEXT: [7] - V3AEUnitS0 +# CHECK-NEXT: [8] - V3AEUnitS1 +# CHECK-NEXT: [9] - V3AEUnitS2 +# CHECK-NEXT: [10] - V3AEUnitS3 +# CHECK-NEXT: [11] - V3AEUnitS4 +# CHECK-NEXT: [12] - V3AEUnitS5 +# CHECK-NEXT: [13] - V3AEUnitST1 +# CHECK-NEXT: [14] - V3AEUnitV0 +# CHECK-NEXT: [15] - V3AEUnitV1 + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.50 4.50 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions: +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sudot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usmmla v0.4s, v0.16b, v0.16b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-neon-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-neon-instructions.s index 533d613249160..29516d3ece779 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-neon-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-neon-instructions.s @@ -1,1234 +1,5 @@ # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py -# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -mattr=+aes,+sha3,+sm4 -instruction-tables < %s | FileCheck %s - -abs d29, d24 -abs v0.16b, v0.16b -abs v0.2d, v0.2d -abs v0.2s, v0.2s -abs v0.4h, v0.4h -abs v0.4s, v0.4s -abs v0.8b, v0.8b -abs v0.8h, v0.8h -add d17, d31, d29 -add v0.8b, v0.8b, v0.8b -addhn v0.2s, v0.2d, v0.2d -addhn v0.4h, v0.4s, v0.4s -addhn v0.8b, v0.8h, v0.8h -addhn2 v0.16b, v0.8h, v0.8h -addhn2 v0.4s, v0.2d, v0.2d -addhn2 v0.8h, v0.4s, v0.4s -addp v0.2d, v0.2d, v0.2d -addp v0.8b, v0.8b, v0.8b -addv s0, v0.4s -addv h0, v0.4h -addv h0, v0.8h -addv b0, v0.8b -addv b0, v0.16b -aesd v0.16b, v0.16b -aese v0.16b, v0.16b -aesimc v0.16b, v0.16b -aesmc v0.16b, v0.16b -and v0.8b, v0.8b, v0.8b -bfcvt h0, s0 -bfcvtn v0.4h, v0.4s -bfcvtn2 v0.8h, v0.4s -bfdot v0.2s, v0.4h, v0.4h -bfdot v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.8h -bfmlalb v0.4s, v0.8h, v0.h[3] -bfmlalt v0.4s, v0.8h, v0.8h -bfmlalt v0.4s, v0.8h, v0.h[3] -bfmmla v0.4s, v0.8h, v0.8h -bic v0.4h, #15, lsl #8 -bic v0.8b, v0.8b, v0.8b -bif v0.16b, v0.16b, v0.16b -bit v0.16b, v0.16b, v0.16b -bsl v0.8b, v0.8b, v0.8b -cls v0.16b, v0.16b -cls v0.2s, v0.2s -cls v0.4h, v0.4h -cls v0.4s, v0.4s -cls v0.8b, v0.8b -cls v0.8h, v0.8h -clz v0.16b, v0.16b -clz v0.2s, v0.2s -clz v0.4h, v0.4h -clz v0.4s, v0.4s -clz v0.8b, v0.8b -clz v0.8h, v0.8h -cmeq d20, d21, 0 -cmeq d20, d21, d22 -cmeq v0.16b, v0.16b, 0 -cmeq v0.16b, v0.16b, v0.16b -cmge d20, d21, 0 -cmge d20, d21, d22 -cmge v0.4h, v0.4h, v0.4h -cmge v0.8b, v0.8b, 0 -cmgt d20, d21, 0 -cmgt d20, d21, d22 -cmgt v0.2s, v0.2s, 0 -cmgt v0.4s, v0.4s, v0.4s -cmhi d20, d21, d22 -cmhi v0.8h, v0.8h, v0.8h -cmhs d20, d21, d22 -cmhs v0.8b, v0.8b, v0.8b -cmle d20, d21, 0 -cmle v0.2d, v0.2d, 0 -cmlt d20, d21, 0 -cmlt v0.8h, v0.8h, 0 -cmtst d20, d21, d22 -cmtst v0.2s, v0.2s, v0.2s -cnt v0.16b, v0.16b -cnt v0.8b, v0.8b -dup v0.16b,w28 -dup v0.2d,x28 -dup v0.2s,w28 -dup v0.4h,w28 -dup v0.4s,w28 -dup v0.8b,w28 -dup v0.8h,w28 -dup b0, v0.b[1] -dup d0, v0.d[1] -dup h0, v0.h[1] -dup s0, v0.s[1] -dup v0.16b, v0.b[1] -dup v0.2d, v0.d[1] -dup v0.2s, v0.s[1] -dup v0.4h, v0.h[1] -dup v0.4s, v0.s[1] -dup v0.8b, v0.b[1] -dup v0.8h, v0.h[1] -eor v0.16b, v0.16b, v0.16b -ext v0.16b, v0.16b, v0.16b, #3 -ext v0.8b, v0.8b, v0.8b, #3 -fabd d29, d24, d20 -fabd s29, s24, s20 -fabd v0.4s, v0.4s, v0.4s -fabs v0.2d, v0.2d -fabs v0.2s, v0.2s -fabs v0.4h, v0.4h -fabs v0.4s, v0.4s -fabs v0.8h, v0.8h -facge d20, d21, d22 -facge s10, s11, s12 -facge v0.4s, v0.4s, v0.4s -facgt d20, d21, d22 -facgt s10, s11, s12 -facgt v0.2d, v0.2d, v0.2d -fadd v0.4s, v0.4s, v0.4s -faddp v0.2s, v0.2s, v0.2s -faddp v0.4s, v0.4s, v0.4s -fcadd v0.2s, v0.2s, v0.2s, 90 -fcadd v0.4s, v0.4s, v0.4s, 270 -fcmeq d20, d21, #0.0 -fcmeq d20, d21, d22 -fcmeq s10, s11, #0.0 -fcmeq s10, s11, s12 -fcmeq v0.2s, v0.2s, #0.0 -fcmeq v0.2s, v0.2s, v0.2s -fcmge d20, d21, #0.0 -fcmge d20, d21, d22 -fcmge s10, s11, #0.0 -fcmge s10, s11, s12 -fcmge v0.2d, v0.2d, #0.0 -fcmge v0.4s, v0.4s, v0.4s -fcmgt d20, d21, #0.0 -fcmgt d20, d21, d22 -fcmgt s10, s11, #0.0 -fcmgt s10, s11, s12 -fcmgt v0.4s, v0.4s, #0.0 -fcmgt v0.4s, v0.4s, v0.4s -fcmla v0.2s, v0.2s, v0.2s, #90 -fcmla v0.4s, v0.4s, v0.s[1], #0 -fcmle d20, d21, #0.0 -fcmle s10, s11, #0.0 -fcmle v0.2d, v0.2d, #0.0 -fcmlt d20, d21, #0.0 -fcmlt s10, s11, #0.0 -fcmlt v0.4s, v0.4s, #0.0 -fcvtas d21, d14 -fcvtas s12, s13 -fcvtas h12, h13 -fcvtas v0.2d, v0.2d -fcvtas v0.2s, v0.2s -fcvtas v0.4h, v0.4h -fcvtas v0.4s, v0.4s -fcvtas v0.8h, v0.8h -fcvtau d21, d14 -fcvtau s12, s13 -fcvtau h12, h13 -fcvtau v0.2d, v0.2d -fcvtau v0.2s, v0.2s -fcvtau v0.4h, v0.4h -fcvtau v0.4s, v0.4s -fcvtau v0.8h, v0.8h -fcvtl v0.2d, v0.2s -fcvtl v0.4s, v0.4h -fcvtl2 v0.2d, v0.4s -fcvtl2 v0.4s, v0.8h -fcvtms d21, d14 -fcvtms s22, s13 -fcvtms h22, h13 -fcvtms v0.2d, v0.2d -fcvtms v0.2s, v0.2s -fcvtms v0.4h, v0.4h -fcvtms v0.4s, v0.4s -fcvtms v0.8h, v0.8h -fcvtmu d21, d14 -fcvtmu s12, s13 -fcvtmu h12, h13 -fcvtmu v0.2d, v0.2d -fcvtmu v0.2s, v0.2s -fcvtmu v0.4h, v0.4h -fcvtmu v0.4s, v0.4s -fcvtmu v0.8h, v0.8h -fcvtn v0.2s, v0.2d -fcvtn v0.4h, v0.4s -fcvtn2 v0.4s, v0.2d -fcvtn2 v0.8h, v0.4s -fcvtns d21, d14 -fcvtns s22, s13 -fcvtns h22, h13 -fcvtns v0.2d, v0.2d -fcvtns v0.2s, v0.2s -fcvtns v0.4h, v0.4h -fcvtns v0.4s, v0.4s -fcvtns v0.8h, v0.8h -fcvtnu d21, d14 -fcvtnu s12, s13 -fcvtnu h12, h13 -fcvtnu v0.2d, v0.2d -fcvtnu v0.2s, v0.2s -fcvtnu v0.4h, v0.4h -fcvtnu v0.4s, v0.4s -fcvtnu v0.8h, v0.8h -fcvtps d21, d14 -fcvtps s22, s13 -fcvtps h22, h13 -fcvtps v0.2d, v0.2d -fcvtps v0.2s, v0.2s -fcvtps v0.4h, v0.4h -fcvtps v0.4s, v0.4s -fcvtps v0.8h, v0.8h -fcvtpu d21, d14 -fcvtpu s12, s13 -fcvtpu h12, h13 -fcvtpu v0.2d, v0.2d -fcvtpu v0.2s, v0.2s -fcvtpu v0.4h, v0.4h -fcvtpu v0.4s, v0.4s -fcvtpu v0.8h, v0.8h -fcvtxn s22, d13 -fcvtxn v0.2s, v0.2d -fcvtxn2 v0.4s, v0.2d -fcvtzs d21, d12, #1 -fcvtzs d21, d14 -fcvtzs s12, s13 -fcvtzs s21, s12, #1 -fcvtzs h21, h14 -fcvtzs h21, h12, #1 -fcvtzs v0.2d, v0.2d -fcvtzs v0.2d, v0.2d, #3 -fcvtzs v0.2s, v0.2s -fcvtzs v0.2s, v0.2s, #3 -fcvtzs v0.4h, v0.4h -fcvtzs v0.4s, v0.4s -fcvtzs v0.4s, v0.4s, #3 -fcvtzs v0.8h, v0.8h -fcvtzu d21, d12, #1 -fcvtzu d21, d14 -fcvtzu s12, s13 -fcvtzu s21, s12, #1 -fcvtzu h12, h13 -fcvtzu h21, h12, #1 -fcvtzu v0.2d, v0.2d -fcvtzu v0.2d, v0.2d, #3 -fcvtzu v0.2s, v0.2s -fcvtzu v0.2s, v0.2s, #3 -fcvtzu v0.4h, v0.4h -fcvtzu v0.4s, v0.4s -fcvtzu v0.4s, v0.4s, #3 -fcvtzu v0.8h, v0.8h -fdiv v0.2d, v0.2d, v0.2d -fdiv v0.2s, v0.2s, v0.2s -fdiv v0.4h, v0.4h, v0.4h -fdiv v0.4s, v0.4s, v0.4s -fdiv v0.8h, v0.8h, v0.8h -fmax v0.2d, v0.2d, v0.2d -fmax v0.2s, v0.2s, v0.2s -fmax v0.4s, v0.4s, v0.4s -fmaxnm v0.2d, v0.2d, v0.2d -fmaxnm v0.2s, v0.2s, v0.2s -fmaxnm v0.4s, v0.4s, v0.4s -fmaxnmp v0.2d, v0.2d, v0.2d -fmaxnmp v0.2s, v0.2s, v0.2s -fmaxnmp v0.4s, v0.4s, v0.4s -fmaxp v0.2d, v0.2d, v0.2d -fmaxp v0.2s, v0.2s, v0.2s -fmaxp v0.4s, v0.4s, v0.4s -fmaxv h0, v0.4h -fmaxv h0, v0.8h -fmaxv s0, v0.4s -fmin v0.2d, v0.2d, v0.2d -fmin v0.2s, v0.2s, v0.2s -fmin v0.4s, v0.4s, v0.4s -fminnm v0.2d, v0.2d, v0.2d -fminnm v0.2s, v0.2s, v0.2s -fminnm v0.4s, v0.4s, v0.4s -fminnmp v0.2d, v0.2d, v0.2d -fminnmp v0.2s, v0.2s, v0.2s -fminnmp v0.4s, v0.4s, v0.4s -fminp v0.2d, v0.2d, v0.2d -fminp v0.2s, v0.2s, v0.2s -fminp v0.4s, v0.4s, v0.4s -fmla d0, d1, v0.d[1] -fmla s0, s1, v0.s[3] -fmla v0.2s, v0.2s, v0.2s -fmlal v0.2s, v0.2h, v0.h[1] -fmlal v0.4s, v0.4h, v0.h[3] -fmlal v0.2s, v0.2h, v0.2h -fmlal v0.4s, v0.4h, v0.4h -fmlal2 v0.2s, v0.2h, v0.h[1] -fmlal2 v0.4s, v0.4h, v0.h[3] -fmlal2 v0.2s, v0.2h, v0.2h -fmlal2 v0.4s, v0.4h, v0.4h -fmls d0, d4, v0.d[1] -fmls s3, s5, v0.s[3] -fmls v0.2s, v0.2s, v0.2s -fmlsl v0.2s, v0.2h, v0.h[1] -fmlsl v0.4s, v0.4h, v0.h[3] -fmlsl v0.2s, v0.2h, v0.2h -fmlsl v0.4s, v0.4h, v0.4h -fmlsl2 v0.2s, v0.2h, v0.h[1] -fmlsl2 v0.4s, v0.4h, v0.h[3] -fmlsl2 v0.2s, v0.2h, v0.2h -fmlsl2 v0.4s, v0.4h, v0.4h -fmov v0.2d, #-1.25 -fmov v0.2s, #13.0 -fmov v0.4s, #1.0 -fmul d0, d1, v0.d[1] -fmul s0, s1, v0.s[3] -fmul v0.2s, v0.2s, v0.2s -fmulx d0, d4, v0.d[1] -fmulx d23, d11, d1 -fmulx s20, s22, s15 -fmulx s3, s5, v0.s[3] -fmulx v0.2d, v0.2d, v0.2d -fmulx v0.2s, v0.2s, v0.2s -fmulx v0.4s, v0.4s, v0.4s -fneg v0.2d, v0.2d -fneg v0.2s, v0.2s -fneg v0.4h, v0.4h -fneg v0.4s, v0.4s -fneg v0.8h, v0.8h -frecpe d13, d13 -frecpe s19, s14 -frecpe v0.2d, v0.2d -frecpe v0.2s, v0.2s -frecpe v0.4h, v0.4h -frecpe v0.4s, v0.4s -frecpe v0.8h, v0.8h -frecps v0.4s, v0.4s, v0.4s -frecps d22, d30, d21 -frecps s21, s16, s13 -frecpx d16, d19 -frecpx s18, s10 -frint32x v0.2d, v0.2d -frint32x v0.2s, v0.2s -frint32x v0.4s, v0.4s -frint32z v0.2d, v0.2d -frint32z v0.2s, v0.2s -frint32z v0.4s, v0.4s -frint64x v0.2d, v0.2d -frint64x v0.2s, v0.2s -frint64x v0.4s, v0.4s -frint64z v0.2d, v0.2d -frint64z v0.2s, v0.2s -frint64z v0.4s, v0.4s -frinta v0.2d, v0.2d -frinta v0.2s, v0.2s -frinta v0.4h, v0.4h -frinta v0.4s, v0.4s -frinta v0.8h, v0.8h -frinti v0.2d, v0.2d -frinti v0.2s, v0.2s -frinti v0.4h, v0.4h -frinti v0.4s, v0.4s -frinti v0.8h, v0.8h -frintm v0.2d, v0.2d -frintm v0.2s, v0.2s -frintm v0.4h, v0.4h -frintm v0.4s, v0.4s -frintm v0.8h, v0.8h -frintn v0.2d, v0.2d -frintn v0.2s, v0.2s -frintn v0.4h, v0.4h -frintn v0.4s, v0.4s -frintn v0.8h, v0.8h -frintp v0.2d, v0.2d -frintp v0.2s, v0.2s -frintp v0.4h, v0.4h -frintp v0.4s, v0.4s -frintp v0.8h, v0.8h -frintx v0.2d, v0.2d -frintx v0.2s, v0.2s -frintx v0.4h, v0.4h -frintx v0.4s, v0.4s -frintx v0.8h, v0.8h -frintz v0.2d, v0.2d -frintz v0.2s, v0.2s -frintz v0.4h, v0.4h -frintz v0.4s, v0.4s -frintz v0.8h, v0.8h -frsqrte d21, d12 -frsqrte s22, s13 -frsqrte v0.2d, v0.2d -frsqrte v0.2s, v0.2s -frsqrte v0.4h, v0.4h -frsqrte v0.4s, v0.4s -frsqrte v0.8h, v0.8h -frsqrts d8, d22, d18 -frsqrts s21, s5, s12 -frsqrts v0.2d, v0.2d, v0.2d -fsqrt v0.2d, v0.2d -fsqrt v0.2s, v0.2s -fsqrt v0.4h, v0.4h -fsqrt v0.4s, v0.4s -fsqrt v0.8h, v0.8h -fsub v0.2s, v0.2s, v0.2s -ld1 { v0.16b }, [x0] -ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -ld1 { v0.4s, v1.4s }, [sp], #32 -ld1 { v0.4s, v1.4s, v2.4s }, [sp] -ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -ld1 { v0.8h }, [x15], x2 -ld1 { v0.8h, v1.8h }, [x15] -ld1 { v0.b }[9], [x0] -ld1 { v0.b }[9], [x0], #1 -ld1r { v0.16b }, [x0] -ld1r { v0.16b }, [x0], #1 -ld1r { v0.8h }, [x15] -ld1r { v0.8h }, [x15], #2 -ld2 { v0.16b, v1.16b }, [x0], x1 -ld2 { v0.8b, v1.8b }, [x0] -ld2 { v0.h, v1.h }[7], [x15] -ld2 { v0.h, v1.h }[7], [x15], #4 -ld2r { v0.2d, v1.2d }, [x0] -ld2r { v0.2d, v1.2d }, [x0], #16 -ld2r { v0.4s, v1.4s }, [sp] -ld2r { v0.4s, v1.4s }, [sp], #8 -ld3 { v0.4h, v1.4h, v2.4h }, [x15] -ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -ld3 { v0.s, v1.s, v2.s }[3], [sp] -ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 -ld3r { v0.4h, v1.4h, v2.4h }, [x15] -ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 -ld3r { v0.8b, v1.8b, v2.8b }, [x0] -ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 -ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] -ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 -ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 -mla v0.8b, v0.8b, v0.8b -mls v0.4h, v0.4h, v0.4h -mov b0, v0.b[15] -mov d6, v0.d[1] -mov h2, v0.h[5] -mov s17, v0.s[2] -mov v2.b[0], v0.b[0] -mov v2.h[1], v0.h[1] -mov v2.s[2], v0.s[2] -mov v2.d[1], v0.d[1] -mov v0.b[0], w8 -mov v0.h[1], w8 -mov v0.s[2], w8 -mov v0.d[1], x8 -mov v0.16b, v0.16b -mov v0.8b, v0.8b -movi d15, #0xff00ff00ff00ff -movi v0.16b, #31 -movi v0.2d, #0xff0000ff0000ffff -movi v0.2s, #8, msl #8 -movi v0.4s, #255, lsl #24 -movi v0.8b, #255 -mul v0.8b, v0.8b, v0.8b -mvni v0.2s, 0 -mvni v0.4s, #16, msl #16 -neg d29, d24 -neg v0.16b, v0.16b -neg v0.2d, v0.2d -neg v0.2s, v0.2s -neg v0.4h, v0.4h -neg v0.4s, v0.4s -neg v0.8b, v0.8b -neg v0.8h, v0.8h -not v0.16b, v0.16b -not v0.8b, v0.8b -orn v0.16b, v0.16b, v0.16b -orr v0.16b, v0.16b, v0.16b -orr v0.8h, #31 -pmul v0.16b, v0.16b, v0.16b -pmul v0.8b, v0.8b, v0.8b -pmull v0.8h, v0.8b, v0.8b -pmull2 v0.8h, v0.16b, v0.16b -raddhn v0.2s, v0.2d, v0.2d -raddhn v0.4h, v0.4s, v0.4s -raddhn v0.8b, v0.8h, v0.8h -raddhn2 v0.16b, v0.8h, v0.8h -raddhn2 v0.4s, v0.2d, v0.2d -raddhn2 v0.8h, v0.4s, v0.4s -rbit v0.16b, v0.16b -rbit v0.8b, v0.8b -rev16 v21.8b, v1.8b -rev16 v30.16b, v31.16b -rev32 v0.4h, v9.4h -rev32 v21.8b, v1.8b -rev32 v30.16b, v31.16b -rev32 v4.8h, v7.8h -rev64 v0.16b, v31.16b -rev64 v1.8b, v9.8b -rev64 v13.4h, v21.4h -rev64 v2.8h, v4.8h -rev64 v4.2s, v0.2s -rev64 v6.4s, v8.4s -rshrn v0.2s, v0.2d, #3 -rshrn v0.4h, v0.4s, #3 -rshrn v0.8b, v0.8h, #3 -rshrn2 v0.16b, v0.8h, #3 -rshrn2 v0.4s, v0.2d, #3 -rshrn2 v0.8h, v0.4s, #3 -rsubhn v0.2s, v0.2d, v0.2d -rsubhn v0.4h, v0.4s, v0.4s -rsubhn v0.8b, v0.8h, v0.8h -rsubhn2 v0.16b, v0.8h, v0.8h -rsubhn2 v0.4s, v0.2d, v0.2d -rsubhn2 v0.8h, v0.4s, v0.4s -saba v0.16b, v0.16b, v0.16b -sabal v0.2d, v0.2s, v0.2s -sabal v0.4s, v0.4h, v0.4h -sabal v0.8h, v0.8b, v0.8b -sabal2 v0.2d, v0.4s, v0.4s -sabal2 v0.4s, v0.8h, v0.8h -sabal2 v0.8h, v0.16b, v0.16b -sabd v0.4h, v0.4h, v0.4h -sabdl v0.2d, v0.2s, v0.2s -sabdl v0.4s, v0.4h, v0.4h -sabdl v0.8h, v0.8b, v0.8b -sabdl2 v0.2d, v0.4s, v0.4s -sabdl2 v0.4s, v0.8h, v0.8h -sabdl2 v0.8h, v0.16b, v0.16b -sadalp v0.1d, v0.2s -sadalp v0.2d, v0.4s -sadalp v0.2s, v0.4h -sadalp v0.4h, v0.8b -sadalp v0.4s, v0.8h -sadalp v0.8h, v0.16b -saddl v0.2d, v0.2s, v0.2s -saddl v0.4s, v0.4h, v0.4h -saddl v0.8h, v0.8b, v0.8b -saddl2 v0.2d, v0.4s, v0.4s -saddl2 v0.4s, v0.8h, v0.8h -saddl2 v0.8h, v0.16b, v0.16b -saddlp v0.1d, v0.2s -saddlp v0.2d, v0.4s -saddlp v0.2s, v0.4h -saddlp v0.4h, v0.8b -saddlp v0.4s, v0.8h -saddlp v0.8h, v0.16b -saddlv d0, v0.4s -saddlv s0, v0.4h -saddlv s0, v0.8h -saddlv h0, v0.8b -saddlv h0, v0.16b -saddw v0.2d, v0.2d, v0.2s -saddw v0.4s, v0.4s, v0.4h -saddw v0.8h, v0.8h, v0.8b -saddw2 v0.2d, v0.2d, v0.4s -saddw2 v0.4s, v0.4s, v0.8h -saddw2 v0.8h, v0.8h, v0.16b -scvtf d21, d12 -scvtf d21, d12, #64 -scvtf s22, s13 -scvtf s22, s13, #32 -scvtf v0.2d, v0.2d -scvtf v0.2d, v0.2d, #3 -scvtf v0.2s, v0.2s -scvtf v0.2s, v0.2s, #3 -scvtf v0.4h, v0.4h -scvtf v0.4s, v0.4s -scvtf v0.4s, v0.4s, #3 -scvtf v0.8h, v0.8h -sdot v0.2s, v0.8b, v0.4b[2] -sdot v0.2s, v0.8b, v0.8b -sdot v0.4s, v0.16b, v0.16b -sdot v0.4s, v0.16b, v0.4b[2] -shadd v0.8b, v0.8b, v0.8b -shl d7, d10, #12 -shl v0.16b, v0.16b, #3 -shl v0.2d, v0.2d, #3 -shl v0.4h, v0.4h, #3 -shl v0.4s, v0.4s, #3 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll v0.2d, v0.2s, #32 -shll v0.4s, v0.4h, #16 -shll v0.8h, v0.8b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shll2 v0.2d, v0.4s, #32 -shll2 v0.4s, v0.8h, #16 -shll2 v0.8h, v0.16b, #8 -shrn v0.2s, v0.2d, #3 -shrn v0.4h, v0.4s, #3 -shrn v0.8b, v0.8h, #3 -shrn2 v0.16b, v0.8h, #3 -shrn2 v0.4s, v0.2d, #3 -shrn2 v0.8h, v0.4s, #3 -shsub v0.2s, v0.2s, v0.2s -shsub v0.4h, v0.4h, v0.4h -sli d10, d14, #12 -sli v0.16b, v0.16b, #3 -sli v0.2d, v0.2d, #3 -sli v0.2s, v0.2s, #3 -sli v0.4h, v0.4h, #3 -sli v0.4s, v0.4s, #3 -sli v0.8b, v0.8b, #3 -sli v0.8h, v0.8h, #3 -smax v0.2s, v0.2s, v0.2s -smax v0.4h, v0.4h, v0.4h -smax v0.8b, v0.8b, v0.8b -smaxp v0.2s, v0.2s, v0.2s -smaxp v0.4h, v0.4h, v0.4h -smaxp v0.8b, v0.8b, v0.8b -smaxv b0, v0.8b -smaxv b0, v0.16b -smaxv h0, v0.4h -smaxv h0, v0.8h -smaxv s0, v0.4s -smin v0.16b, v0.16b, v0.16b -smin v0.4s, v0.4s, v0.4s -smin v0.8h, v0.8h, v0.8h -sminp v0.16b, v0.16b, v0.16b -sminp v0.4s, v0.4s, v0.4s -sminp v0.8h, v0.8h, v0.8h -sminv b0, v0.8b -sminv b0, v0.16b -sminv h0, v0.4h -sminv h0, v0.8h -sminv s0, v0.4s -smlal v0.2d, v0.2s, v0.2s -smlal v0.4s, v0.4h, v0.4h -smlal v0.8h, v0.8b, v0.8b -smlal2 v0.2d, v0.4s, v0.4s -smlal2 v0.4s, v0.8h, v0.8h -smlal2 v0.8h, v0.16b, v0.16b -smlsl v0.2d, v0.2s, v0.2s -smlsl v0.4s, v0.4h, v0.4h -smlsl v0.8h, v0.8b, v0.8b -smlsl2 v0.2d, v0.4s, v0.4s -smlsl2 v0.4s, v0.8h, v0.8h -smlsl2 v0.8h, v0.16b, v0.16b -smmla v0.4s, v0.16b, v0.16b -smull v0.2d, v0.2s, v0.2s -smull v0.4s, v0.4h, v0.4h -smull v0.8h, v0.8b, v0.8b -smull2 v0.2d, v0.4s, v0.4s -smull2 v0.4s, v0.8h, v0.8h -smull2 v0.8h, v0.16b, v0.16b -sqabs b19, b14 -sqabs d18, d12 -sqabs h21, h15 -sqabs s20, s12 -sqabs v0.16b, v0.16b -sqabs v0.2d, v0.2d -sqabs v0.2s, v0.2s -sqabs v0.4h, v0.4h -sqabs v0.4s, v0.4s -sqabs v0.8b, v0.8b -sqabs v0.8h, v0.8h -sqadd b20, b11, b15 -sqadd v0.16b, v0.16b, v0.16b -sqadd v0.2s, v0.2s, v0.2s -sqdmlal d19, s24, s12 -sqdmlal d8, s9, v0.s[1] -sqdmlal s0, h0, v0.h[3] -sqdmlal s17, h27, h12 -sqdmlal v0.2d, v0.2s, v0.2s -sqdmlal v0.4s, v0.4h, v0.4h -sqdmlal2 v0.2d, v0.4s, v0.4s -sqdmlal2 v0.4s, v0.8h, v0.8h -sqdmlsl d12, s23, s13 -sqdmlsl d8, s9, v0.s[1] -sqdmlsl s0, h0, v0.h[3] -sqdmlsl s14, h12, h25 -sqdmlsl v0.2d, v0.2s, v0.2s -sqdmlsl v0.4s, v0.4h, v0.4h -sqdmlsl2 v0.2d, v0.4s, v0.4s -sqdmlsl2 v0.4s, v0.8h, v0.8h -sqdmulh h10, h11, h12 -sqdmulh h7, h15, v0.h[3] -sqdmulh s15, s14, v0.s[1] -sqdmulh s20, s21, s2 -sqdmulh v0.2s, v0.2s, v0.2s -sqdmulh v0.4s, v0.4s, v0.4s -sqdmull d1, s1, v0.s[1] -sqdmull d15, s22, s12 -sqdmull s1, h1, v0.h[3] -sqdmull s12, h22, h12 -sqdmull v0.2d, v0.2s, v0.2s -sqdmull v0.4s, v0.4h, v0.4h -sqdmull2 v0.2d, v0.4s, v0.4s -sqdmull2 v0.4s, v0.8h, v0.8h -sqneg b19, b14 -sqneg d18, d12 -sqneg h21, h15 -sqneg s20, s12 -sqneg v0.16b, v0.16b -sqneg v0.2d, v0.2d -sqneg v0.2s, v0.2s -sqneg v0.4h, v0.4h -sqneg v0.4s, v0.4s -sqneg v0.8b, v0.8b -sqneg v0.8h, v0.8h -sqrdmlah h0, h1, v2.h[3] -sqrdmlah v0.4h, v1.4h, v2.h[3] -sqrdmlah v0.8h, v1.8h, v2.h[3] -sqrdmlah s0, s1, v2.s[1] -sqrdmlah v0.2s, v1.2s, v2.s[1] -sqrdmlah v0.4s, v1.4s, v2.s[1] -sqrdmlah h0, h1, h2 -sqrdmlah v0.4h, v1.4h, v2.4h -sqrdmlah v0.8h, v1.8h, v2.8h -sqrdmlah s0, s1, s2 -sqrdmlah v0.2s, v1.2s, v2.2s -sqrdmlah v0.4s, v1.4s, v2.4s -sqrdmlsh h0, h1, v2.h[3] -sqrdmlsh v0.4h, v1.4h, v2.h[3] -sqrdmlsh v0.8h, v1.8h, v2.h[3] -sqrdmlsh s0, s1, v2.s[1] -sqrdmlsh v0.2s, v1.2s, v2.s[1] -sqrdmlsh v0.4s, v1.4s, v2.s[1] -sqrdmlsh h0, h1, h2 -sqrdmlsh v0.4h, v1.4h, v2.4h -sqrdmlsh v0.8h, v1.8h, v2.8h -sqrdmlsh s0, s1, s2 -sqrdmlsh v0.2s, v1.2s, v2.2s -sqrdmlsh v0.4s, v1.4s, v2.4s -sqrdmulh h10, h11, h12 -sqrdmulh h7, h15, v0.h[3] -sqrdmulh s15, s14, v0.s[1] -sqrdmulh s20, s21, s2 -sqrdmulh v0.4h, v0.4h, v0.4h -sqrdmulh v0.8h, v0.8h, v0.8h -sqrshl d31, d31, d31 -sqrshl h3, h4, h15 -sqrshl v0.2s, v0.2s, v0.2s -sqrshl v0.4h, v0.4h, v0.4h -sqrshl v0.8b, v0.8b, v0.8b -sqrshrn b10, h13, #2 -sqrshrn h15, s10, #6 -sqrshrn s15, d12, #9 -sqrshrn v0.2s, v0.2d, #3 -sqrshrn v0.4h, v0.4s, #3 -sqrshrn v0.8b, v0.8h, #3 -sqrshrn2 v0.16b, v0.8h, #3 -sqrshrn2 v0.4s, v0.2d, #3 -sqrshrn2 v0.8h, v0.4s, #3 -sqrshrun b17, h10, #6 -sqrshrun h10, s13, #15 -sqrshrun s22, d16, #31 -sqrshrun v0.2s, v0.2d, #3 -sqrshrun v0.4h, v0.4s, #3 -sqrshrun v0.8b, v0.8h, #3 -sqrshrun2 v0.16b, v0.8h, #3 -sqrshrun2 v0.4s, v0.2d, #3 -sqrshrun2 v0.8h, v0.4s, #3 -sqshl b11, b19, #7 -sqshl d15, d16, #51 -sqshl d31, d31, d31 -sqshl h13, h18, #11 -sqshl h3, h4, h15 -sqshl s14, s17, #22 -sqshl v0.16b, v0.16b, #3 -sqshl v0.2d, v0.2d, #3 -sqshl v0.2s, v0.2s, #3 -sqshl v0.2s, v0.2s, v0.2s -sqshl v0.4h, v0.4h, #3 -sqshl v0.4h, v0.4h, v0.4h -sqshl v0.4s, v0.4s, #3 -sqshl v0.8b, v0.8b, #3 -sqshl v0.8b, v0.8b, v0.8b -sqshl v0.8h, v0.8h, #3 -sqshlu b15, b18, #6 -sqshlu d11, d13, #32 -sqshlu h19, h17, #6 -sqshlu s16, s14, #25 -sqshlu v0.16b, v0.16b, #3 -sqshlu v0.2d, v0.2d, #3 -sqshlu v0.2s, v0.2s, #3 -sqshlu v0.4h, v0.4h, #3 -sqshlu v0.4s, v0.4s, #3 -sqshlu v0.8b, v0.8b, #3 -sqshlu v0.8h, v0.8h, #3 -sqshrn b10, h15, #5 -sqshrn h17, s10, #4 -sqshrn s18, d10, #31 -sqshrn v0.2s, v0.2d, #3 -sqshrn v0.4h, v0.4s, #3 -sqshrn v0.8b, v0.8h, #3 -sqshrn2 v0.16b, v0.8h, #3 -sqshrn2 v0.4s, v0.2d, #3 -sqshrn2 v0.8h, v0.4s, #3 -sqshrun b15, h10, #7 -sqshrun h20, s14, #3 -sqshrun s10, d15, #15 -sqshrun v0.2s, v0.2d, #3 -sqshrun v0.4h, v0.4s, #3 -sqshrun v0.8b, v0.8h, #3 -sqshrun2 v0.16b, v0.8h, #3 -sqshrun2 v0.4s, v0.2d, #3 -sqshrun2 v0.8h, v0.4s, #3 -sqsub s20, s10, s7 -sqsub v0.2d, v0.2d, v0.2d -sqsub v0.4s, v0.4s, v0.4s -sqsub v0.8b, v0.8b, v0.8b -sqxtn b18, h18 -sqxtn h20, s17 -sqxtn s19, d14 -sqxtn v0.2s, v0.2d -sqxtn v0.4h, v0.4s -sqxtn v0.8b, v0.8h -sqxtn2 v0.16b, v0.8h -sqxtn2 v0.4s, v0.2d -sqxtn2 v0.8h, v0.4s -sqxtun b19, h14 -sqxtun h21, s15 -sqxtun s20, d12 -sqxtun v0.2s, v0.2d -sqxtun v0.4h, v0.4s -sqxtun v0.8b, v0.8h -sqxtun2 v0.16b, v0.8h -sqxtun2 v0.4s, v0.2d -sqxtun2 v0.8h, v0.4s -srhadd v0.2s, v0.2s, v0.2s -srhadd v0.4h, v0.4h, v0.4h -srhadd v0.8b, v0.8b, v0.8b -sri d10, d12, #14 -sri v0.16b, v0.16b, #3 -sri v0.2d, v0.2d, #3 -sri v0.2s, v0.2s, #3 -sri v0.4h, v0.4h, #3 -sri v0.4s, v0.4s, #3 -sri v0.8b, v0.8b, #3 -sri v0.8h, v0.8h, #3 -srshl d16, d16, d16 -srshl v0.2s, v0.2s, v0.2s -srshl v0.4h, v0.4h, v0.4h -srshl v0.8b, v0.8b, v0.8b -srshr d19, d18, #7 -srshr v0.16b, v0.16b, #3 -srshr v0.2d, v0.2d, #3 -srshr v0.2s, v0.2s, #3 -srshr v0.4h, v0.4h, #3 -srshr v0.4s, v0.4s, #3 -srshr v0.8b, v0.8b, #3 -srshr v0.8h, v0.8h, #3 -srsra d15, d11, #19 -srsra v0.16b, v0.16b, #3 -srsra v0.2d, v0.2d, #3 -srsra v0.2s, v0.2s, #3 -srsra v0.4h, v0.4h, #3 -srsra v0.4s, v0.4s, #3 -srsra v0.8b, v0.8b, #3 -srsra v0.8h, v0.8h, #3 -sshl d31, d31, d31 -sshl v0.2d, v0.2d, v0.2d -sshl v0.2s, v0.2s, v0.2s -sshl v0.4h, v0.4h, v0.4h -sshl v0.8b, v0.8b, v0.8b -sshll v0.2d, v0.2s, #3 -sshll2 v0.4s, v0.8h, #3 -sshr d15, d16, #12 -sshr v0.16b, v0.16b, #3 -sshr v0.2d, v0.2d, #3 -sshr v0.2s, v0.2s, #3 -sshr v0.4h, v0.4h, #3 -sshr v0.4s, v0.4s, #3 -sshr v0.8b, v0.8b, #3 -sshr v0.8h, v0.8h, #3 -ssra d18, d12, #21 -ssra v0.16b, v0.16b, #3 -ssra v0.2d, v0.2d, #3 -ssra v0.2s, v0.2s, #3 -ssra v0.4h, v0.4h, #3 -ssra v0.4s, v0.4s, #3 -ssra v0.8b, v0.8b, #3 -ssra v0.8h, v0.8h, #3 -ssubl v0.2d, v0.2s, v0.2s -ssubl v0.4s, v0.4h, v0.4h -ssubl v0.8h, v0.8b, v0.8b -ssubl2 v0.2d, v0.4s, v0.4s -ssubl2 v0.4s, v0.8h, v0.8h -ssubl2 v0.8h, v0.16b, v0.16b -ssubw v0.2d, v0.2d, v0.2s -ssubw v0.4s, v0.4s, v0.4h -ssubw v0.8h, v0.8h, v0.8b -ssubw2 v0.2d, v0.2d, v0.4s -ssubw2 v0.4s, v0.4s, v0.8h -ssubw2 v0.8h, v0.8h, v0.16b -st1 { v0.16b }, [x0] -st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -st1 { v0.4s, v1.4s }, [sp], #32 -st1 { v0.4s, v1.4s, v2.4s }, [sp] -st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 -st1 { v0.8h }, [x15], x2 -st1 { v0.8h, v1.8h }, [x15] -st1 { v0.d }[1], [x0] -st1 { v0.d }[1], [x0], #8 -st2 { v0.16b, v1.16b }, [x0], x1 -st2 { v0.8b, v1.8b }, [x0] -st2 { v0.s, v1.s }[3], [sp] -st2 { v0.s, v1.s }[3], [sp], #8 -st3 { v0.4h, v1.4h, v2.4h }, [x15] -st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 -st3 { v0.h, v1.h, v2.h }[7], [x15] -st3 { v0.h, v1.h, v2.h }[7], [x15], #6 -st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] -st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 -st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 -sub d15, d5, d16 -sub v0.2d, v0.2d, v0.2d -sudot v0.2s, v0.8b, v0.4b[2] -sudot v0.4s, v0.16b, v0.4b[2] -suqadd b19, b14 -suqadd d18, d22 -suqadd h20, h15 -suqadd s21, s12 -suqadd v0.16b, v0.16b -suqadd v0.2d, v0.2d -suqadd v0.2s, v0.2s -suqadd v0.4h, v0.4h -suqadd v0.4s, v0.4s -suqadd v0.8b, v0.8b -suqadd v0.8h, v0.8h -tbl v0.16b, { v0.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbl v0.8b, { v0.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -tbx v0.16b, { v0.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -tbx v0.8b, { v0.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -trn1 v0.16b, v0.16b, v0.16b -trn1 v0.2d, v0.2d, v0.2d -trn1 v0.2s, v0.2s, v0.2s -trn1 v0.4h, v0.4h, v0.4h -trn1 v0.4s, v0.4s, v0.4s -trn1 v0.8b, v0.8b, v0.8b -trn1 v0.8h, v0.8h, v0.8h -trn2 v0.16b, v0.16b, v0.16b -trn2 v0.2d, v0.2d, v0.2d -trn2 v0.2s, v0.2s, v0.2s -trn2 v0.4h, v0.4h, v0.4h -trn2 v0.4s, v0.4s, v0.4s -trn2 v0.8b, v0.8b, v0.8b -trn2 v0.8h, v0.8h, v0.8h -uaba v0.8b, v0.8b, v0.8b -uabal v0.2d, v0.2s, v0.2s -uabal v0.4s, v0.4h, v0.4h -uabal v0.8h, v0.8b, v0.8b -uabal2 v0.2d, v0.4s, v0.4s -uabal2 v0.4s, v0.8h, v0.8h -uabal2 v0.8h, v0.16b, v0.16b -uabd v0.4h, v0.4h, v0.4h -uabdl v0.2d, v0.2s, v0.2s -uabdl v0.4s, v0.4h, v0.4h -uabdl v0.8h, v0.8b, v0.8b -uabdl2 v0.2d, v0.4s, v0.4s -uabdl2 v0.4s, v0.8h, v0.8h -uabdl2 v0.8h, v0.16b, v0.16b -uadalp v0.1d, v0.2s -uadalp v0.2d, v0.4s -uadalp v0.2s, v0.4h -uadalp v0.4h, v0.8b -uadalp v0.4s, v0.8h -uadalp v0.8h, v0.16b -uaddl v0.2d, v0.2s, v0.2s -uaddl v0.4s, v0.4h, v0.4h -uaddl v0.8h, v0.8b, v0.8b -uaddl2 v0.2d, v0.4s, v0.4s -uaddl2 v0.4s, v0.8h, v0.8h -uaddl2 v0.8h, v0.16b, v0.16b -uaddlp v0.1d, v0.2s -uaddlp v0.2d, v0.4s -uaddlp v0.2s, v0.4h -uaddlp v0.4h, v0.8b -uaddlp v0.4s, v0.8h -uaddlp v0.8h, v0.16b -uaddlv d0, v0.4s -uaddlv s0, v0.4h -uaddlv s0, v0.8h -uaddlv h0, v0.8b -uaddlv h0, v0.16b -uaddw v0.2d, v0.2d, v0.2s -uaddw v0.4s, v0.4s, v0.4h -uaddw v0.8h, v0.8h, v0.8b -uaddw2 v0.2d, v0.2d, v0.4s -uaddw2 v0.4s, v0.4s, v0.8h -uaddw2 v0.8h, v0.8h, v0.16b -ucvtf d21, d14 -ucvtf d21, d14, #64 -ucvtf s22, s13 -ucvtf s22, s13, #32 -ucvtf v0.2d, v0.2d -ucvtf v0.2d, v0.2d, #3 -ucvtf v0.2s, v0.2s -ucvtf v0.2s, v0.2s, #3 -ucvtf v0.4h, v0.4h -ucvtf v0.4s, v0.4s -ucvtf v0.4s, v0.4s, #3 -ucvtf v0.8h, v0.8h -udot v0.2s, v0.8b, v0.4b[2] -udot v0.2s, v0.8b, v0.8b -udot v0.4s, v0.16b, v0.16b -udot v0.4s, v0.16b, v0.4b[2] -uhadd v0.16b, v0.16b, v0.16b -uhadd v0.8h, v0.8h, v0.8h -uhsub v0.4s, v0.4s, v0.4s -umax v0.16b, v0.16b, v0.16b -umax v0.4s, v0.4s, v0.4s -umax v0.8h, v0.8h, v0.8h -umaxp v0.16b, v0.16b, v0.16b -umaxp v0.4s, v0.4s, v0.4s -umaxp v0.8h, v0.8h, v0.8h -umaxv b0, v0.8b -umaxv b0, v0.16b -umaxv h0, v0.4h -umaxv h0, v0.8h -umaxv s0, v0.4s -umin v0.2s, v0.2s, v0.2s -umin v0.4h, v0.4h, v0.4h -umin v0.8b, v0.8b, v0.8b -uminp v0.2s, v0.2s, v0.2s -uminp v0.4h, v0.4h, v0.4h -uminp v0.8b, v0.8b, v0.8b -uminv b0, v0.8b -uminv b0, v0.16b -uminv h0, v0.4h -uminv h0, v0.8h -uminv s0, v0.4s -umlal v0.2d, v0.2s, v0.2s -umlal v0.4s, v0.4h, v0.4h -umlal v0.8h, v0.8b, v0.8b -umlal2 v0.2d, v0.4s, v0.4s -umlal2 v0.4s, v0.8h, v0.8h -umlal2 v0.8h, v0.16b, v0.16b -umlsl v0.2d, v0.2s, v0.2s -umlsl v0.4s, v0.4h, v0.4h -umlsl v0.8h, v0.8b, v0.8b -umlsl2 v0.2d, v0.4s, v0.4s -umlsl2 v0.4s, v0.8h, v0.8h -umlsl2 v0.8h, v0.16b, v0.16b -ummla v0.4s, v0.16b, v0.16b -umov w0, v0.b[1] -umov w0, v0.h[1] -umov w0, v0.s[1] -umov x0, v0.d[1] -umull v0.2d, v0.2s, v0.2s -umull v0.4s, v0.4h, v0.4h -umull v0.8h, v0.8b, v0.8b -umull2 v0.2d, v0.4s, v0.4s -umull2 v0.4s, v0.8h, v0.8h -umull2 v0.8h, v0.16b, v0.16b -uqadd h0, h1, h5 -uqadd v0.8h, v0.8h, v0.8h -uqrshl b11, b20, b30 -uqrshl s23, s20, s16 -uqrshl v0.16b, v0.16b, v0.16b -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.4s, v0.4s, v0.4s -uqrshl v0.8h, v0.8h, v0.8h -uqrshrn b10, h12, #5 -uqrshrn h12, s10, #14 -uqrshrn s10, d10, #25 -uqrshrn v0.2s, v0.2d, #3 -uqrshrn v0.4h, v0.4s, #3 -uqrshrn v0.8b, v0.8h, #3 -uqrshrn2 v0.16b, v0.8h, #3 -uqrshrn2 v0.4s, v0.2d, #3 -uqrshrn2 v0.8h, v0.4s, #3 -uqshl b11, b20, b30 -uqshl b18, b15, #6 -uqshl d15, d12, #19 -uqshl h11, h18, #7 -uqshl s14, s19, #18 -uqshl s23, s20, s16 -uqshl v0.16b, v0.16b, #3 -uqshl v0.16b, v0.16b, v0.16b -uqshl v0.2d, v0.2d, #3 -uqshl v0.2d, v0.2d, v0.2d -uqshl v0.2s, v0.2s, #3 -uqshl v0.4h, v0.4h, #3 -uqshl v0.4s, v0.4s, #3 -uqshl v0.4s, v0.4s, v0.4s -uqshl v0.8b, v0.8b, #3 -uqshl v0.8h, v0.8h, #3 -uqshl v0.8h, v0.8h, v0.8h -uqshrn b12, h10, #7 -uqshrn h10, s14, #5 -uqshrn s10, d12, #13 -uqshrn v0.2s, v0.2d, #3 -uqshrn v0.4h, v0.4s, #3 -uqshrn v0.8b, v0.8h, #3 -uqshrn2 v0.16b, v0.8h, #3 -uqshrn2 v0.4s, v0.2d, #3 -uqshrn2 v0.8h, v0.4s, #3 -uqsub d16, d16, d16 -uqsub v0.4h, v0.4h, v0.4h -uqxtn b18, h18 -uqxtn h20, s17 -uqxtn s19, d14 -uqxtn v0.2s, v0.2d -uqxtn v0.4h, v0.4s -uqxtn v0.8b, v0.8h -uqxtn2 v0.16b, v0.8h -uqxtn2 v0.4s, v0.2d -uqxtn2 v0.8h, v0.4s -urecpe v0.2s, v0.2s -urecpe v0.4s, v0.4s -urhadd v0.16b, v0.16b, v0.16b -urhadd v0.4s, v0.4s, v0.4s -urhadd v0.8h, v0.8h, v0.8h -urshl d8, d7, d4 -urshl v0.16b, v0.16b, v0.16b -urshl v0.2d, v0.2d, v0.2d -urshl v0.4s, v0.4s, v0.4s -urshl v0.8h, v0.8h, v0.8h -urshr d20, d23, #31 -urshr v0.16b, v0.16b, #3 -urshr v0.2d, v0.2d, #3 -urshr v0.2s, v0.2s, #3 -urshr v0.4h, v0.4h, #3 -urshr v0.4s, v0.4s, #3 -urshr v0.8b, v0.8b, #3 -urshr v0.8h, v0.8h, #3 -ursqrte v0.2s, v0.2s -ursqrte v0.4s, v0.4s -ursra d18, d10, #13 -ursra v0.16b, v0.16b, #3 -ursra v0.2d, v0.2d, #3 -ursra v0.2s, v0.2s, #3 -ursra v0.4h, v0.4h, #3 -ursra v0.4s, v0.4s, #3 -ursra v0.8b, v0.8b, #3 -ursra v0.8h, v0.8h, #3 -usdot v0.2s, v0.8b, v0.4b[2] -usdot v0.2s, v0.8b, v0.8b -usdot v0.4s, v0.16b, v0.16b -usdot v0.4s, v0.16b, v0.4b[2] -ushl d0, d0, d0 -ushl v0.16b, v0.16b, v0.16b -ushl v0.4s, v0.4s, v0.4s -ushl v0.8h, v0.8h, v0.8h -ushll v0.4s, v0.4h, #3 -ushll2 v0.8h, v0.16b, #3 -ushr d10, d17, #18 -ushr v0.16b, v0.16b, #3 -ushr v0.2d, v0.2d, #3 -ushr v0.2s, v0.2s, #3 -ushr v0.4h, v0.4h, #3 -ushr v0.4s, v0.4s, #3 -ushr v0.8b, v0.8b, #3 -ushr v0.8h, v0.8h, #3 -usmmla v0.4s, v0.16b, v0.16b -smov w0, v0.b[1] -smov w0, v0.h[1] -smov x0, v0.b[1] -smov x0, v0.h[1] -smov x0, v0.s[1] -usqadd b19, b14 -usqadd d18, d22 -usqadd h20, h15 -usqadd s21, s12 -usqadd v0.16b, v0.16b -usqadd v0.2d, v0.2d -usqadd v0.2s, v0.2s -usqadd v0.4h, v0.4h -usqadd v0.4s, v0.4s -usqadd v0.8b, v0.8b -usqadd v0.8h, v0.8h -usra d20, d13, #61 -usra v0.16b, v0.16b, #3 -usra v0.2d, v0.2d, #3 -usra v0.2s, v0.2s, #3 -usra v0.4h, v0.4h, #3 -usra v0.4s, v0.4s, #3 -usra v0.8b, v0.8b, #3 -usra v0.8h, v0.8h, #3 -usubl v0.2d, v0.2s, v0.2s -usubl v0.4s, v0.4h, v0.4h -usubl v0.8h, v0.8b, v0.8b -usubl2 v0.2d, v0.4s, v0.4s -usubl2 v0.4s, v0.8h, v0.8h -usubl2 v0.8h, v0.16b, v0.16b -usubw v0.2d, v0.2d, v0.2s -usubw v0.4s, v0.4s, v0.4h -usubw v0.8h, v0.8h, v0.8b -usubw2 v0.2d, v0.2d, v0.4s -usubw2 v0.4s, v0.4s, v0.8h -usubw2 v0.8h, v0.8h, v0.16b -uzp1 v0.16b, v0.16b, v0.16b -uzp1 v0.2d, v0.2d, v0.2d -uzp1 v0.2s, v0.2s, v0.2s -uzp1 v0.4h, v0.4h, v0.4h -uzp1 v0.4s, v0.4s, v0.4s -uzp1 v0.8b, v0.8b, v0.8b -uzp1 v0.8h, v0.8h, v0.8h -uzp2 v0.16b, v0.16b, v0.16b -uzp2 v0.2d, v0.2d, v0.2d -uzp2 v0.2s, v0.2s, v0.2s -uzp2 v0.4h, v0.4h, v0.4h -uzp2 v0.4s, v0.4s, v0.4s -uzp2 v0.8b, v0.8b, v0.8b -uzp2 v0.8h, v0.8h, v0.8h -xtn v0.2s, v0.2d -xtn v0.4h, v0.4s -xtn v0.8b, v0.8h -xtn2 v0.16b, v0.8h -xtn2 v0.4s, v0.2d -xtn2 v0.8h, v0.4s -zip1 v0.16b, v0.16b, v0.16b -zip1 v0.2d, v0.2d, v0.2d -zip1 v0.2s, v0.2s, v0.2s -zip1 v0.4h, v0.4h, v0.4h -zip1 v0.4s, v0.4s, v0.4s -zip1 v0.8b, v0.8b, v0.8b -zip1 v0.8h, v0.8h, v0.8h -zip2 v0.16b, v0.16b, v0.16b -zip2 v0.2d, v0.2d, v0.2d -zip2 v0.2s, v0.2s, v0.2s -zip2 v0.4h, v0.4h, v0.4h -zip2 v0.4s, v0.4s, v0.4s -zip2 v0.8b, v0.8b, v0.8b -zip2 v0.8h, v0.8h, v0.8h +# RUN: llvm-mca -mtriple=aarch64 -mcpu=neoverse-v3ae -mattr=+aes -instruction-tables < %p/Inputs/neon-instructions.s | FileCheck %s # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -1255,8 +26,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: 1 2 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 addp d1, v14.2d # CHECK-NEXT: 1 3 1.00 addv s0, v0.4s # CHECK-NEXT: 1 3 1.00 addv h0, v0.4h # CHECK-NEXT: 2 5 1.00 addv h0, v0.8h @@ -1267,21 +40,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 aesimc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 aesmc v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: 1 3 1.00 bfcvt h0, s0 -# CHECK-NEXT: 2 4 2.00 bfcvtn v0.4h, v0.4s -# CHECK-NEXT: 2 4 2.00 bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: 1 5 0.50 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: 1 5 0.50 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.50 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 5 0.50 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: 1 5 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: 1 6 0.50 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: 1 2 0.50 bic v23.8h, #101 # CHECK-NEXT: 1 2 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: 1 2 0.50 bic v24.2s, #70 +# CHECK-NEXT: 1 2 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: 1 2 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: 1 2 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: 1 2 0.50 cls v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cls v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 cls v0.4h, v0.4h @@ -1294,28 +63,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 clz v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 clz v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: 1 2 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: 1 2 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: 1 2 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: 1 2 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: 1 2 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: 1 2 0.50 cmhi d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 cmhs d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: 1 2 0.50 cmle d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: 1 2 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: 1 2 0.50 cmlt d20, d21, #0 # CHECK-NEXT: 1 2 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: 1 2 0.50 cmtst d20, d21, d22 # CHECK-NEXT: 1 2 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: 1 2 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 dup v0.16b, w28 @@ -1341,7 +119,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 fabd d29, d24, d20 # CHECK-NEXT: 1 2 0.50 fabd s29, s24, s20 +# CHECK-NEXT: 1 2 0.50 fabd h27, h20, h17 +# CHECK-NEXT: 1 2 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: 1 2 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fabs h25, h7 # CHECK-NEXT: 1 2 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fabs v0.4h, v0.4h @@ -1349,41 +130,67 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 facge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facge s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facge h24, h26, h29 +# CHECK-NEXT: 1 2 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: 1 2 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: 1 2 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 facgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 facgt s10, s11, s12 +# CHECK-NEXT: 1 2 0.50 facgt h0, h4, h10 # CHECK-NEXT: 1 2 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 2 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: 1 2 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: 1 2 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 faddp h10, v19.2h +# CHECK-NEXT: 1 2 0.50 faddp d11, v28.2d # CHECK-NEXT: 1 2 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 faddp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 2 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 2 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: 1 2 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: 1 2 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: 1 2 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: 1 2 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge h1, h16, h12 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmge s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: 1 2 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: 1 2 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: 1 2 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmgt v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: 1 4 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 +# CHECK-NEXT: 1 2 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: 1 2 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: 1 2 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: 1 2 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: 1 3 1.00 fcvtas d21, d14 # CHECK-NEXT: 2 4 2.00 fcvtas s12, s13 # CHECK-NEXT: 4 6 4.00 fcvtas h12, h13 @@ -1470,9 +277,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2s, v0.2s # CHECK-NEXT: 1 3 1.00 fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4h, v0.4h +# CHECK-NEXT: 2 4 2.00 fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzs v0.8h, v0.8h +# CHECK-NEXT: 4 6 4.00 fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: 1 3 1.00 fcvtzu d21, d12, #1 # CHECK-NEXT: 1 3 1.00 fcvtzu d21, d14 # CHECK-NEXT: 2 4 2.00 fcvtzu s12, s13 @@ -1484,9 +293,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2s, v0.2s # CHECK-NEXT: 1 3 1.00 fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4h, v0.4h +# CHECK-NEXT: 2 4 2.00 fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: 4 6 4.00 fcvtzu v0.8h, v0.8h +# CHECK-NEXT: 4 6 4.00 fcvtzu v27.8h, v6.8h, #11 # CHECK-NEXT: 1 14 2.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 9 2.00 fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 9 4.00 fdiv v0.4h, v0.4h, v0.4h @@ -1498,12 +309,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: 1 2 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 1.00 fmaxnmv h0, v13.4h +# CHECK-NEXT: 3 6 1.50 fmaxnmv h12, v11.8h +# CHECK-NEXT: 2 4 1.00 fmaxnmv s28, v31.4s # CHECK-NEXT: 1 2 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: 1 2 0.50 fmaxp s6, v2.2s # CHECK-NEXT: 2 4 1.00 fmaxv h0, v0.4h # CHECK-NEXT: 3 6 1.50 fmaxv h0, v0.8h # CHECK-NEXT: 2 4 1.00 fmaxv s0, v0.4s @@ -1513,52 +331,71 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: 1 2 0.50 fminnmp d15, v8.2d # CHECK-NEXT: 1 2 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 2 4 1.00 fminnmv h19, v25.4h +# CHECK-NEXT: 3 6 1.50 fminnmv h23, v17.8h +# CHECK-NEXT: 2 4 1.00 fminnmv s29, v17.4s # CHECK-NEXT: 1 2 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 2 0.50 fminp h7, v10.2h +# CHECK-NEXT: 1 2 0.50 fminp s17, v7.2s +# CHECK-NEXT: 2 4 1.00 fminv h3, v30.4h +# CHECK-NEXT: 3 6 1.50 fminv h29, v12.8h +# CHECK-NEXT: 2 4 1.00 fminv s16, v19.4s # CHECK-NEXT: 1 4 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: 1 4 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmla v0.2s, v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.50 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.50 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.50 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.50 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.50 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: 1 4 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: 1 4 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: 1 4 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: 1 4 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: 1 4 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: 1 4 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: 1 4 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: 1 4 0.50 fmls v0.2s, v0.2s, v0.2s -# CHECK-NEXT: 1 4 0.50 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.50 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.50 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.50 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: 1 4 0.50 fmlsl2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: 1 4 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: 1 4 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: 1 4 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: 1 2 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: 1 2 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: 1 2 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: 1 3 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: 1 3 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: 1 3 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: 1 3 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: 1 3 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: 1 3 0.50 fmul h28, h14, h3 # CHECK-NEXT: 1 3 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: 1 3 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: 1 2 0.50 fmulx d23, d11, d1 # CHECK-NEXT: 1 2 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: 1 3 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: 1 2 0.50 fmulx h20, h25, h0 # CHECK-NEXT: 1 3 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: 1 3 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: 1 3 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: 1 3 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 3 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: 1 3 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: 1 3 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: 1 2 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: 1 2 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 frecpe h20, h8 # CHECK-NEXT: 1 3 1.00 frecpe d13, d13 # CHECK-NEXT: 1 3 1.00 frecpe s19, s14 # CHECK-NEXT: 1 2 0.50 frecpe v0.2d, v0.2d @@ -1566,23 +403,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frecpe v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frecpe v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frecpe v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 frecps h29, h19, h8 +# CHECK-NEXT: 1 3 1.00 frecpx h18, h11 +# CHECK-NEXT: 1 4 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: 1 4 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 frecps d22, d30, d21 # CHECK-NEXT: 1 4 0.50 frecps s21, s16, s13 +# CHECK-NEXT: 1 4 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: 1 3 1.00 frecpx d16, d19 # CHECK-NEXT: 1 3 1.00 frecpx s18, s10 -# CHECK-NEXT: 1 3 1.00 frint32x v0.2d, v0.2d -# CHECK-NEXT: 1 3 1.00 frint32x v0.2s, v0.2s -# CHECK-NEXT: 2 4 2.00 frint32x v0.4s, v0.4s -# CHECK-NEXT: 1 3 1.00 frint32z v0.2d, v0.2d -# CHECK-NEXT: 1 3 1.00 frint32z v0.2s, v0.2s -# CHECK-NEXT: 2 4 2.00 frint32z v0.4s, v0.4s -# CHECK-NEXT: 1 3 1.00 frint64x v0.2d, v0.2d -# CHECK-NEXT: 1 3 1.00 frint64x v0.2s, v0.2s -# CHECK-NEXT: 2 4 2.00 frint64x v0.4s, v0.4s -# CHECK-NEXT: 1 3 1.00 frint64z v0.2d, v0.2d -# CHECK-NEXT: 1 3 1.00 frint64z v0.2s, v0.2s -# CHECK-NEXT: 2 4 2.00 frint64z v0.4s, v0.4s # CHECK-NEXT: 1 3 1.00 frinta v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 frinta v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 frinta v0.4h, v0.4h @@ -1618,13 +447,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 frintz v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frintz v0.4s, v0.4s # CHECK-NEXT: 4 6 4.00 frintz v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 frsqrte h23, h26 # CHECK-NEXT: 1 3 1.00 frsqrte d21, d12 # CHECK-NEXT: 1 3 1.00 frsqrte s22, s13 # CHECK-NEXT: 1 2 0.50 frsqrte v0.2d, v0.2d # CHECK-NEXT: 1 3 1.00 frsqrte v0.2s, v0.2s # CHECK-NEXT: 2 4 2.00 frsqrte v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 frsqrte v0.4s, v0.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: 1 4 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: 4 6 4.00 frsqrte v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: 1 4 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: 1 4 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: 1 4 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -1633,52 +466,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 9 4.00 fsqrt v0.4h, v0.4h # CHECK-NEXT: 1 11 4.00 fsqrt v0.4s, v0.4s # CHECK-NEXT: 1 13 8.00 fsqrt v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: 1 2 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 6 0.33 * ld1 { v0.16b }, [x0] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: 3 6 1.00 * ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: 4 7 1.33 * ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: 1 6 0.33 * ld1 { v24.8h }, [x27] +# CHECK-NEXT: 2 6 0.67 * ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: 3 6 0.67 * ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: 3 6 1.00 * ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: 4 7 1.33 * ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.4s }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: 4 7 1.33 * ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: 4 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: 1 6 0.33 * ld1 { v3.2d }, [x28] +# CHECK-NEXT: 2 6 0.67 * ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: 3 6 1.00 * ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: 4 6 1.00 * ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: 4 7 1.33 * ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 6 0.33 * ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: 2 6 0.67 * ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: 3 6 1.00 * ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: 2 6 0.67 * ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: 4 7 1.33 * ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: 2 6 0.67 * ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: 4 7 1.33 * ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: 3 6 1.00 * ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: 2 6 0.67 * ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: 3 6 1.00 * ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: 4 7 1.33 * ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: 3 6 0.67 * ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 3 6 1.00 * ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 7 1.33 * ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 2 8 0.50 * ld1 { v0.b }[7], [x0] +# CHECK-NEXT: 3 8 0.50 * ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: 2 8 0.50 * ld1 { v18.h }[3], [x1] +# CHECK-NEXT: 2 8 0.50 * ld1 { v0.s }[1], [x15] +# CHECK-NEXT: 3 8 0.50 * ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: 2 8 0.50 * ld1 { v11.d }[0], [x13] # CHECK-NEXT: 2 6 0.33 * ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: 2 6 0.67 * ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 2 8 0.50 * ld1 { v0.b }[9], [x0] # CHECK-NEXT: 3 8 0.50 * ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: 2 8 0.50 * ld1r { v0.16b }, [x0] +# CHECK-NEXT: 3 8 0.50 * ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: 2 8 0.50 * ld1r { v0.4s }, [x15] +# CHECK-NEXT: 2 8 0.50 * ld1r { v3.1d }, [x15] +# CHECK-NEXT: 3 8 0.50 * ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: 2 8 0.50 * ld1r { v18.2d }, [x0] +# CHECK-NEXT: 2 8 0.50 * ld1r { v8.8b }, [x23] +# CHECK-NEXT: 2 8 0.50 * ld1r { v28.4h }, [x9] +# CHECK-NEXT: 2 8 0.50 * ld1r { v3.8h }, [x16] +# CHECK-NEXT: 2 8 0.50 * ld1r { v10.2s }, [x20] +# CHECK-NEXT: 3 8 1.00 * ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: 4 8 1.00 * ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: 3 8 1.00 * ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: 4 8 1.00 * ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: 4 8 1.00 * ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: 3 8 1.00 * ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: 3 8 1.00 * ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: 3 8 1.00 * ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: 4 8 1.00 * ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: 3 8 1.00 * ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: 4 8 1.00 * ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: 3 8 0.50 * ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: 2 8 0.50 * ld1r { v0.8h }, [x15] # CHECK-NEXT: 3 8 0.50 * ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: 5 8 1.00 * ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 8 1.00 * ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: 3 8 1.00 * ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: 4 8 1.00 * ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: 4 8 1.00 * ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: 3 8 1.00 * ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 3 8 1.00 * ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: 4 8 1.00 * ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: 3 8 1.00 * ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: 3 8 1.00 * ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: 3 8 1.00 * ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: 3 8 1.00 * ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: 4 8 1.00 * ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: 3 8 1.00 * ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: 3 8 1.00 * ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: 5 8 1.50 * ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: 3 8 1.00 * ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: 4 8 1.00 * ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: 3 8 1.00 * ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: 4 8 1.00 * ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: 5 8 1.50 * ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: 7 8 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: 6 8 1.50 * ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: 5 8 1.50 * ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: 5 8 1.50 * ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: 5 8 1.50 * ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: 6 8 1.50 * ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: 7 8 1.50 * ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: 5 8 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: 6 8 1.50 * ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: 5 8 1.50 * ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: 5 8 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: 6 8 1.50 * ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: 5 8 1.50 * ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 6 8 1.50 * ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: 5 8 1.50 * ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: 6 8 1.50 * ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: 5 8 1.50 * ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: 6 8 1.50 * ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: 6 8 1.50 * ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: 5 8 1.50 * ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: 6 8 1.50 * ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: 7 8 2.00 * ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: 10 9 2.00 * ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: 7 8 2.00 * ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: 10 9 2.00 * ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: 10 9 2.00 * ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: 5 8 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: 6 8 1.50 * ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: 7 8 2.00 * ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 11 9 2.00 * ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: 7 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: 10 9 2.00 * ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: 7 8 2.00 * ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: 7 8 2.00 * ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: 8 8 2.00 * ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: 8 8 2.00 * ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: 7 8 2.00 * ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: 7 8 2.00 * ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: 8 8 2.00 * ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: 7 8 2.00 * ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: 7 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: 8 8 2.00 * ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: 7 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: 8 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: 8 8 2.00 * ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: 9 8 2.00 * ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: 8 8 2.00 * ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: 7 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 8 8 2.00 * ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: 1 4 1.00 mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: 1 4 1.00 mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: 1 4 1.00 mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: 1 4 1.00 mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: 1 2 0.50 mov b0, v0.b[15] # CHECK-NEXT: 1 2 0.50 mov d6, v0.d[1] # CHECK-NEXT: 1 2 0.50 mov h2, v0.h[5] # CHECK-NEXT: 1 2 0.50 mov s17, v0.s[2] +# CHECK-NEXT: 2 2 1.00 mov w8, v8.s[0] +# CHECK-NEXT: 2 2 1.00 mov x30, v18.d[0] # CHECK-NEXT: 1 2 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: 1 2 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: 1 2 0.50 mov v2.s[2], v0.s[2] @@ -1691,11 +635,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mov v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: 1 2 0.50 movi v0.16b, #31 +# CHECK-NEXT: 1 2 0.50 movi v14.8h, #174 +# CHECK-NEXT: 1 2 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: 1 2 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: 1 2 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: 1 2 0.50 movi v19.2s, #226 +# CHECK-NEXT: 1 2 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: 1 2 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: 1 2 0.50 movi v0.8b, #255 # CHECK-NEXT: 1 4 1.00 mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: 1 4 1.00 mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: 1 4 1.00 mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: 1 4 1.00 mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: 1 4 1.00 mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: 1 4 1.00 mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: 1 2 0.50 mvni v9.4h, #237 +# CHECK-NEXT: 1 2 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: 1 2 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: 1 2 0.50 mvni v0.2s, #0 # CHECK-NEXT: 1 2 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: 1 2 0.50 neg d29, d24 @@ -1709,8 +666,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: 1 2 0.50 mov v0.16b, v0.16b +# CHECK-NEXT: 1 2 0.50 orr v9.4h, #18 # CHECK-NEXT: 1 2 0.50 orr v0.8h, #31 +# CHECK-NEXT: 1 2 0.50 orr v4.4s, #0 # CHECK-NEXT: 1 3 0.50 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 pmull v0.8h, v0.8b, v0.8b @@ -1755,6 +715,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -1790,6 +751,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 4 6 4.00 scvtf h4, h8, #9 +# CHECK-NEXT: 4 6 4.00 scvtf h5, h14 # CHECK-NEXT: 1 3 1.00 scvtf d21, d12 # CHECK-NEXT: 1 3 1.00 scvtf d21, d12, #64 # CHECK-NEXT: 2 4 2.00 scvtf s22, s13 @@ -1801,26 +764,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 scvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 scvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 2.00 scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: 4 6 4.00 scvtf v0.8h, v0.8h +# CHECK-NEXT: 4 6 4.00 scvtf v4.8h, v8.8h, #10 # CHECK-NEXT: 1 3 0.50 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.50 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: 1 2 0.50 shl d7, d10, #12 +# CHECK-NEXT: 1 2 0.50 shl v23.8b, v18.8b, #6 # CHECK-NEXT: 1 2 0.50 shl v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 shl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 2 0.50 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 2 0.50 shl v0.8h, v23.8h, #10 # CHECK-NEXT: 1 2 0.50 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: 1 2 0.50 shll v0.2d, v0.2s, #32 # CHECK-NEXT: 1 2 0.50 shll v0.4s, v0.4h, #16 # CHECK-NEXT: 1 2 0.50 shll v0.8h, v0.8b, #8 # CHECK-NEXT: 1 2 0.50 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: 1 2 0.50 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: 1 2 0.50 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: 1 2 0.50 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: 1 2 0.50 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: 1 2 0.50 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: 1 2 0.50 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: 1 2 0.50 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: 1 2 0.50 shll2 v0.8h, v0.16b, #8 @@ -1832,6 +794,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: 1 2 0.50 sli d10, d14, #12 # CHECK-NEXT: 1 2 0.50 sli v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sli v0.2d, v0.2d, #3 @@ -1843,8 +806,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: 1 2 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: 1 2 0.50 smaxp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 2 5 1.00 smaxv b0, v0.8b # CHECK-NEXT: 2 6 2.00 smaxv b0, v0.16b @@ -1863,23 +828,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 5 1.00 sminv h0, v0.8h # CHECK-NEXT: 1 3 1.00 sminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: 1 4 1.00 smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: 1 4 1.00 smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: 1 4 1.00 smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: 1 4 1.00 smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: 1 4 1.00 smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.50 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 1.00 smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 1.00 smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: 1 3 1.00 smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 1.00 smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: 1 3 1.00 smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: 1 3 1.00 smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: 1 3 1.00 smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqabs b19, b14 # CHECK-NEXT: 1 2 0.50 sqabs d18, d12 @@ -1893,6 +869,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: 1 2 0.50 sqadd h12, h18, h10 # CHECK-NEXT: 1 2 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 1.00 sqdmlal d19, s24, s12 @@ -1900,17 +877,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlal s17, h27, h12 # CHECK-NEXT: 1 4 1.00 sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: 1 4 1.00 sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: 1 4 1.00 sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: 1 4 1.00 sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: 1 3 1.00 sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: 1 3 1.00 sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: 1 3 1.00 sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: 1 3 1.00 sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: 1 4 1.00 sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: 1 4 1.00 sqdmlsl d12, s23, s13 # CHECK-NEXT: 1 4 1.00 sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: 1 4 1.00 sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmlsl s14, h12, h25 # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: 1 4 1.00 sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: 1 4 1.00 sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: 1 4 1.00 sqdmulh h10, h11, h12 # CHECK-NEXT: 1 4 1.00 sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: 1 4 1.00 sqdmulh s15, s14, v0.s[1] @@ -1971,6 +965,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.50 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 sqshl s17, s4, s23 +# CHECK-NEXT: 1 2 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: 1 2 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: 1 4 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: 1 4 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: 1 4 0.50 sqrshrn s15, d12, #9 @@ -1996,6 +993,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 sqshl h3, h4, h15 # CHECK-NEXT: 1 4 0.50 sqshl s14, s17, #22 # CHECK-NEXT: 1 4 0.50 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: 1 4 0.50 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: 1 4 0.50 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 0.50 sqshl v0.2s, v0.2s, v0.2s @@ -2092,8 +1090,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: 1 2 0.50 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: 1 2 0.50 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: 1 2 0.50 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: 1 2 0.50 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: 1 2 0.50 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: 1 2 0.50 sshr d15, d16, #12 # CHECK-NEXT: 1 2 0.50 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 sshr v0.2d, v0.2d, #3 @@ -2122,32 +1124,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 2 2 0.50 * st1 { v18.8b }, [x15] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: 2 2 0.50 * st1 { v0.16b }, [x0] +# CHECK-NEXT: 4 2 1.00 * st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: 6 2 1.50 * st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: 8 2 2.00 * st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: 2 2 0.50 * st1 { v19.4h }, [x7] +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: 4 2 1.00 * st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: 4 2 1.00 * st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: 2 2 0.50 * st1 { v27.8h }, [x17] +# CHECK-NEXT: 6 2 1.50 * st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: 8 2 2.00 * st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: 2 2 0.50 * st1 { v25.2s }, [x6] +# CHECK-NEXT: 2 2 0.50 * st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: 4 2 1.00 * st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: 2 2 0.50 * st1 { v22.4s }, [x19] +# CHECK-NEXT: 4 2 1.00 * st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: 8 2 2.00 * st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: 2 2 0.50 * st1 { v20.1d }, [x10] +# CHECK-NEXT: 2 2 0.50 * st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: 4 2 1.00 * st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: 4 2 1.00 * st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: 4 2 1.00 * st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: 7 2 1.50 * st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: 6 2 1.50 * st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: 8 2 2.00 * st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: 2 2 0.50 * st1 { v8.2d }, [x15] +# CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 5 2 1.00 * st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: 6 2 1.50 * st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: 5 2 1.00 * st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: 3 4 1.00 * st1 { v1.b }[5], [x1] +# CHECK-NEXT: 3 4 1.00 * st1 { v0.h }[2], [x1] +# CHECK-NEXT: 3 4 1.00 * st1 { v31.s }[1], [x16] # CHECK-NEXT: 3 2 0.50 * st1 { v0.8h }, [x15], x2 # CHECK-NEXT: 4 2 1.00 * st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: 3 4 1.00 * st1 { v0.d }[1], [x0] # CHECK-NEXT: 4 4 1.00 * st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: 7 4 2.00 * st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: 3 4 1.00 * st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: 6 4 2.00 * st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: 3 4 1.00 * st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: 6 4 2.00 * st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: 3 4 1.00 * st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: 6 4 2.00 * st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: 6 4 2.00 * st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: 3 4 1.00 * st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: 3 4 1.00 * st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: 3 4 1.00 * st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: 4 4 1.00 * st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: 3 4 1.00 * st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: 6 5 2.00 * st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: 9 6 3.00 * st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: 6 5 2.00 * st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: 10 6 3.00 * st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: 9 6 3.00 * st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: 6 5 2.00 * st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: 9 6 3.00 * st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: 9 6 3.00 * st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: 6 5 2.00 * st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: 6 5 2.00 * st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: 7 5 2.00 * st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: 6 5 2.00 * st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: 6 5 2.00 * st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: 8 6 3.00 * st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: 16 7 6.00 * st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: 8 6 3.00 * st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: 16 7 6.00 * st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: 8 6 3.00 * st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: 17 7 6.00 * st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: 16 7 6.00 * st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: 12 5 4.00 * st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: 4 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: 4 6 1.50 * st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: 4 6 1.50 * st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: 6 4 2.00 * st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: 4 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: 5 6 1.50 * st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: 7 4 2.00 * st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: 1 2 0.50 sub d15, d5, d16 # CHECK-NEXT: 1 2 0.50 sub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: 1 3 0.50 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: 1 2 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: 1 2 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: 1 2 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: 1 2 0.50 suqadd b19, b14 # CHECK-NEXT: 1 2 0.50 suqadd d18, d22 # CHECK-NEXT: 1 2 0.50 suqadd h20, h15 @@ -2190,6 +1256,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: 1 2 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 4 0.50 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: 1 4 0.50 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 4 0.50 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 4 0.50 uabal v0.8h, v0.8b, v0.8b @@ -2197,6 +1264,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: 1 2 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -2232,8 +1300,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: 1 2 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: 1 2 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: 1 3 1.00 ucvtf h17, x12 +# CHECK-NEXT: 4 6 4.00 ucvtf h22, h16, #11 +# CHECK-NEXT: 4 6 4.00 ucvtf h7, h21 # CHECK-NEXT: 1 3 1.00 ucvtf d21, d14 # CHECK-NEXT: 1 3 1.00 ucvtf d21, d14, #64 +# CHECK-NEXT: 1 3 1.00 ucvtf s8, x0 # CHECK-NEXT: 2 4 2.00 ucvtf s22, s13 # CHECK-NEXT: 2 4 2.00 ucvtf s22, s13, #32 # CHECK-NEXT: 1 3 1.00 ucvtf v0.2d, v0.2d @@ -2243,13 +1315,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4h, v0.4h # CHECK-NEXT: 2 4 2.00 ucvtf v0.4s, v0.4s # CHECK-NEXT: 2 4 2.00 ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: 2 4 2.00 ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: 4 6 4.00 ucvtf v0.8h, v0.8h +# CHECK-NEXT: 4 6 4.00 ucvtf v22.8h, v20.8h, #10 # CHECK-NEXT: 1 3 0.50 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: 1 3 0.50 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: 1 3 0.50 udot v0.4s, v0.16b, v0.16b # CHECK-NEXT: 1 3 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: 1 2 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 umax v0.4s, v0.4s, v0.4s @@ -2265,7 +1340,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: 1 2 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: 1 2 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: 1 2 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: 1 2 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: 1 2 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: 1 2 0.50 uminp v0.8b, v0.8b, v0.8b # CHECK-NEXT: 2 5 1.00 uminv b0, v0.8b @@ -2274,35 +1351,50 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 2 5 1.00 uminv h0, v0.8h # CHECK-NEXT: 1 3 1.00 uminv s0, v0.4s # CHECK-NEXT: 1 4 1.00 umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: 1 4 1.00 umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: 1 4 1.00 umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: 1 4 1.00 umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: 1 4 1.00 umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: 1 4 1.00 umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: 1 4 1.00 umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: 1 4 1.00 umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 4 1.00 umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 4 1.00 umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: 1 4 1.00 umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 4 1.00 umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: 1 4 1.00 umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 4 1.00 umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 4 1.00 umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 4 1.00 umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: 1 4 1.00 umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 2 2 1.00 umov w6, v22.b[0] # CHECK-NEXT: 2 2 1.00 umov w0, v0.b[1] +# CHECK-NEXT: 2 2 1.00 umov w10, v25.h[0] # CHECK-NEXT: 2 2 1.00 umov w0, v0.h[1] # CHECK-NEXT: 2 2 1.00 mov w0, v0.s[1] # CHECK-NEXT: 2 2 1.00 mov x0, v0.d[1] # CHECK-NEXT: 1 3 1.00 umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: 1 3 1.00 umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: 1 3 1.00 umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: 1 3 1.00 umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: 1 3 1.00 umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: 1 3 1.00 umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: 1 3 1.00 umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: 1 3 1.00 umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: 1 3 1.00 umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: 1 3 1.00 umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: 1 2 0.50 uqadd s0, s24, s30 # CHECK-NEXT: 1 2 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: 1 4 0.50 uqrshl b11, b20, b30 # CHECK-NEXT: 1 4 0.50 uqrshl s23, s20, s16 +# CHECK-NEXT: 1 4 0.50 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: 1 4 0.50 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: 1 4 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: 1 4 0.50 uqrshrn h12, s10, #14 @@ -2325,6 +1417,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.50 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: 1 4 0.50 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: 1 4 0.50 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: 1 4 0.50 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 4 0.50 uqshl v0.8b, v0.8b, #3 @@ -2339,8 +1432,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: 1 4 0.50 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: 1 4 0.50 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: 1 2 0.50 uqsub s16, s21, s6 # CHECK-NEXT: 1 2 0.50 uqsub d16, d16, d16 # CHECK-NEXT: 1 2 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: 1 2 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: 1 4 0.50 uqxtn b18, h18 # CHECK-NEXT: 1 4 0.50 uqxtn h20, s17 # CHECK-NEXT: 1 4 0.50 uqxtn s19, d14 @@ -2355,7 +1450,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: 1 2 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: 1 4 0.50 urshl d8, d7, d4 +# CHECK-NEXT: 1 4 0.50 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: 1 4 0.50 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 4 0.50 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: 1 4 0.50 urshl v0.4s, v0.4s, v0.4s @@ -2378,15 +1475,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 4 0.50 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: 1 4 0.50 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: 1 3 0.50 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: 1 3 0.50 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: 1 2 0.50 ushl d0, d0, d0 +# CHECK-NEXT: 1 2 0.50 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: 1 2 0.50 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: 1 2 0.50 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: 1 2 0.50 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: 1 2 0.50 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: 1 2 0.50 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: 1 2 0.50 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: 1 2 0.50 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: 1 2 0.50 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: 1 2 0.50 ushr d10, d17, #18 # CHECK-NEXT: 1 2 0.50 ushr v0.16b, v0.16b, #3 @@ -2396,7 +1494,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: 1 2 0.50 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: 1 2 0.50 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: 1 3 0.50 usmmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: 2 2 1.00 U smov w15, v22.b[0] +# CHECK-NEXT: 2 2 1.00 U smov w26, v27.h[0] +# CHECK-NEXT: 2 2 1.00 U smov x21, v0.b[0] +# CHECK-NEXT: 2 2 1.00 U smov x9, v27.h[0] +# CHECK-NEXT: 2 2 1.00 U smov x15, v3.s[0] # CHECK-NEXT: 2 2 1.00 smov w0, v0.b[1] # CHECK-NEXT: 2 2 1.00 smov w0, v0.h[1] # CHECK-NEXT: 2 2 1.00 smov x0, v0.b[1] @@ -2495,7 +1597,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] -# CHECK-NEXT: - - - - - - - - - 27.33 27.33 48.83 14.88 3.88 3.88 3.88 3.88 3.88 3.88 3.88 21.50 1003.00 595.00 +# CHECK-NEXT: - - - - - - - - - 106.00 106.00 189.00 19.13 6.13 6.13 6.13 6.13 6.13 6.13 6.13 83.00 1340.50 858.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [0.2] [1.0] [1.1] [2.0] [2.1] [2.2] [2.3] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Instructions: @@ -2515,8 +1617,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addhn2 v0.16b, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addhn2 v0.4s, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addp v7.2s, v1.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addp v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 addp d1, v14.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 1.00 addv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 1.00 addv h0, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 1.50 addv h0, v0.8h @@ -2527,21 +1631,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 aesimc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 aesmc v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 and v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - bfcvt h0, s0 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - bfcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - bfcvtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfdot v0.2s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfdot v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalb v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmlalt v0.4s, v0.8h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bfmmla v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bic v0.4h, #15, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bic v23.8h, #101 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bic v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bic v25.16b, v10.16b, v9.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bic v24.2s, #70 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bit v5.8b, v12.8b, v22.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bif v0.8b, v25.8b, v4.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bif v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bit v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bsl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 bsl v27.16b, v13.16b, v21.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cls v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cls v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cls v0.4h, v0.4h @@ -2554,28 +1654,37 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 clz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 clz v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 clz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmeq v9.8h, v16.8h, v24.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmeq v14.4h, v18.4h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmeq d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmeq v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmge v22.8h, v16.8h, v3.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmge v22.16b, v30.16b, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmge d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmge v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmge v0.8b, v0.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmgt v3.2d, v29.2d, v11.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmgt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmgt v0.2s, v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmgt v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmhi v28.4h, v25.4h, v21.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmhi d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmhi v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmhs d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmhs v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmle v21.2s, v19.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmle d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmle v0.2d, v0.2d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmlt v26.4h, v12.4h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmlt d20, d21, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmlt v0.8h, v0.8h, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmtst d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmtst v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cmtst v13.2d, v13.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cnt v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 cnt v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - dup v0.16b, w28 @@ -2601,7 +1710,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ext v0.8b, v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabd d29, d24, d20 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabd s29, s24, s20 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabd h27, h20, h17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabd v13.8h, v28.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabs h25, h7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabs v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabs v0.4h, v0.4h @@ -2609,41 +1721,67 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facge s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facge h24, h26, h29 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facge v25.4h, v16.4h, v11.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facge v19.2s, v24.2s, v5.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facge v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facgt s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facgt h0, h4, h10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facgt v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facgt v22.8h, v14.8h, v31.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 facgt v22.4s, v8.4s, v2.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fadd v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 faddp h10, v19.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 faddp d11, v28.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 faddp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 faddp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcadd v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcadd v0.4s, v0.4s, v0.4s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 faddp v16.2d, v11.2d, v5.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq h30, h6, h1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq h19, h23, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq v12.4s, v11.4s, v26.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmeq v18.2d, v17.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge h10, h23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge h1, h16, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge v17.2d, v11.2d, v13.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge v18.4h, v27.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge v20.8h, v19.8h, v22.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmge v17.2s, v11.2s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt h4, h5, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt h0, h18, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt d20, d21, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt s10, s11, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmla v0.2s, v0.2s, v0.2s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmla v0.4s, v0.4s, v0.s[1], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt v24.8h, v24.8h, v28.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt v0.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmgt v19.2d, v31.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmle v16.8h, v11.8h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmle v22.4s, v30.4s, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmle d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmle s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmle v0.2d, v0.2d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmle h18, h28, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmlt h23, h7, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmlt d20, d21, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmlt s10, s11, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmlt v0.4s, v0.4s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmlt v8.4h, v2.4h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fcmlt v7.2d, v16.2d, #0.0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtas d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtas s12, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - fcvtas h12, h13 @@ -2730,9 +1868,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtzs v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtzs v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzs v20.4h, v24.4h, #11 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzs v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzs v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - fcvtzs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - fcvtzs v18.8h, v10.8h, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtzu d21, d12, #1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtzu d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzu s12, s13 @@ -2744,9 +1884,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtzu v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - fcvtzu v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzu v19.4h, v26.4h, #9 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzu v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - fcvtzu v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - fcvtzu v27.8h, v6.8h, #11 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 2.00 fdiv v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 2.00 fdiv v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 4.00 fdiv v0.4h, v0.4h, v0.4h @@ -2758,12 +1900,19 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnmp h25, v19.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnmp d17, v29.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fmaxnmv h0, v13.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.50 1.50 fmaxnmv h12, v11.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fmaxnmv s28, v31.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxp h15, v25.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmaxp s6, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fmaxv h0, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.50 1.50 fmaxv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fmaxv s0, v0.4s @@ -2773,52 +1922,71 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnm v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnm v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnm v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnmp h20, v14.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnmp d15, v8.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnmp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnmp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminnmp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fminnmv h19, v25.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.50 1.50 fminnmv h23, v17.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fminnmv s29, v17.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminp v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminp h7, v10.2h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fminp s17, v7.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fminv h3, v30.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.50 1.50 fminv h29, v12.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 fminv s16, v19.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla d0, d1, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla h23, h24, v15.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlal2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla v29.8h, v15.8h, v10.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla v2.2s, v16.2s, v28.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla v14.4s, v14.4s, v5.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla v1.4s, v24.4s, v12.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmla v10.2d, v14.2d, v21.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls d0, d4, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls h8, h14, v7.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.2s, v0.2h, v0.2h -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmlsl2 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls v30.8h, v18.8h, v4.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls v10.2s, v27.2s, v0.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls v27.4s, v7.4s, v24.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls v10.2d, v22.2d, v29.d[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmls v6.8h, v15.8h, v23.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmov v0.2d, #-1.25000000 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmov v0.2s, #13.00000000 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmov v0.4s, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul h18, h4, v7.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul v10.4h, v2.4h, v7.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul v5.2s, v12.2s, v9.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul v15.4s, v30.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul v11.2d, v31.2d, v24.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul h28, h14, h3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul d0, d1, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul s0, s1, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmul v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx d0, d4, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx d23, d11, d1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx s20, s22, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx h18, h17, v7.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx h20, h25, h0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx s3, s5, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v28.4h, v25.4h, v15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v3.2s, v22.2s, v23.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v5.4s, v28.4s, v15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fmulx v22.2d, v18.2d, v25.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fneg v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fneg v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fneg v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fneg v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frecpe h20, h8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frecpe d13, d13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frecpe s19, s14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecpe v0.2d, v0.2d @@ -2826,23 +1994,15 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frecpe v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frecpe v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - frecpe v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecps h29, h19, h8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frecpx h18, h11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecps v12.8h, v25.8h, v4.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecps v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecps d22, d30, d21 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecps s21, s16, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frecps v7.2d, v29.2d, v18.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frecpx d16, d19 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frecpx s18, s10 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32x v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32x v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint32x v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32z v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint32z v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint32z v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64x v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64x v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint64x v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64z v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frint64z v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frint64z v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frinta v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frinta v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frinta v0.4h, v0.4h @@ -2878,13 +2038,17 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frintz v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frintz v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frsqrte h23, h26 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frsqrte d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frsqrte s22, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrte v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - frsqrte v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frsqrte v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrts v20.4s, v26.4s, v27.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrts v8.4h, v9.4h, v30.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - frsqrte v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrts h28, h26, h1 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrts d8, d22, d18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrts s21, s5, s12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 frsqrts v0.2d, v0.2d, v0.2d @@ -2893,52 +2057,163 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 4.00 fsqrt v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 4.00 fsqrt v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 8.00 fsqrt v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fsub v13.8h, v15.8h, v17.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 fsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - ld1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v0.16b, v1.16b }, [x14] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v19.16b, v20.16b, v21.16b }, [x10] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v13.16b, v14.16b, v15.16b, v16.16b }, [x9] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - ld1 { v24.8h }, [x27] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v1.8h, v2.8h }, [x27] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.8h, v1.8h }, [sp], #32 +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v21.8h, v22.8h, v23.8h }, [x22] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v0.8h, v1.8h, v2.8h, v3.8h }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - ld1 { v3.4s }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v11.4s, v12.4s }, [x30] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [x24] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v15.4s, v16.4s, v17.4s, v18.4s }, [x28] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.4s, v1.4s, v2.4s }, [x0], #48 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - - ld1 { v3.2d }, [x28] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v13.2d, v14.2d }, [x13] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v12.2d, v13.2d, v14.2d }, [x15] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 # CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.1d }, [x15], x2 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v27.1d, v28.1d }, [x7] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v14.1d, v15.1d, v16.1d }, [x3] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v22.1d, v23.1d, v24.1d, v25.1d }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v0.2s, v1.2s }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v16.2s, v17.2s, v18.2s }, [x27] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v21.2s, v22.2s, v23.2s, v24.2s }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v25.4h, v26.4h }, [x3] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v20.4h, v21.4h, v22.4h, v23.4h }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v0.4h, v1.4h, v2.4h }, [sp] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v24.8b, v25.8b }, [x6] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v7.8b, v8.8b, v9.8b }, [x12] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - - - ld1 { v4.8b, v5.8b, v6.8b, v7.8b }, [x13] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - - - ld1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1 { v0.b }[7], [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1 { v0.h }[3], [x0], #2 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1 { v18.h }[3], [x1] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1 { v0.s }[1], [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1 { v0.d }[0], [x15], #8 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1 { v11.d }[0], [x13] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - - - ld1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - - ld1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1 { v0.b }[9], [x0] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1 { v0.b }[9], [x0], #1 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1r { v0.8h }, [x0], #2 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v0.4s }, [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v3.1d }, [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1r { v0.2d }, [x15], x16 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v18.2d }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v8.8b }, [x23] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v28.4h }, [x9] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v3.8h }, [x16] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v10.2s }, [x20] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v0.4h, v1.4h }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.00 1.00 ld2 { v8.8h, v9.8h }, [x28] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v2.2s, v3.2s }, [x16] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.00 1.00 ld2 { v22.4s, v23.4s }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.00 1.00 ld2 { v22.2d, v23.2d }, [x17] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v29.b, v30.b }[3], [x1] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v26.s, v27.s }[1], [x17] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v1.d, v2.d }[0], [x10] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.00 1.00 ld2 { v0.16b, v1.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v13.8b, v14.8b }, [x4] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2 { v0.8b, v1.8b }, [x0], #16 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1r { v0.16b }, [x0], #1 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 0.50 0.50 ld1r { v0.8h }, [x15] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 0.50 0.50 ld1r { v0.8h }, [x15], #2 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v0.8b, v1.8b }, [x0] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15], x8 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2 { v0.h, v1.h }[7], [x15], #4 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v10.16b, v11.16b }, [x23] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2r { v0.4h, v1.4h }, [x0], #4 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v25.4h, v26.4h }, [x11] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v23.8h, v24.8h }, [x10] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v0.2s, v1.2s }, [sp] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v8.4s, v9.4s }, [x17] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2r { v0.1d, v1.1d }, [sp], x8 +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v9.1d, v10.1d }, [x25] +# CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v26.2d, v27.2d }, [x8] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v8.8b, v9.8b, v10.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3 { v15.16b, v16.16b, v17.16b }, [x5] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v0.2d, v1.2d }, [x0] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2r { v0.2d, v1.2d }, [x0], #16 # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 - - - - - - - - - 1.00 1.00 ld2r { v0.4s, v1.4s }, [sp] # CHECK-NEXT: - - - - - - - - - 0.33 0.33 0.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.00 1.00 ld2r { v0.4s, v1.4s }, [sp], #8 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v0.4h, v1.4h, v2.4h }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], #48 +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3 { v7.8h, v8.8h, v9.8h }, [x21] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v16.2s, v17.2s, v18.2s }, [x0] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3 { v12.4s, v13.4s, v14.4s }, [x25] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v17.b, v18.b, v19.b }[2], [x27] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v18.h, v19.h, v20.h }[5], [x16] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3 { v10.2d, v11.2d, v12.2d }, [x18] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.50 1.50 ld3 { v0.8h, v1.8h, v2.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.50 1.50 ld3 { v0.s, v1.s, v2.s }[3], [sp], x3 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3 { v5.d, v6.d, v7.d }[1], [x14] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x15] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3r { v17.16b, v18.16b, v19.16b }, [x3] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3r { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.50 1.50 ld3r { v0.4h, v1.4h, v2.4h }, [x15], #6 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3r { v3.4h, v4.4h, v5.4h }, [x1] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3r { v6.8h, v7.8h, v8.8h }, [x28] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3r { v0.2s, v1.2s, v2.2s }, [x0] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3r { v28.4s, v29.4s, v30.4s }, [x2] +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.50 1.50 ld3r { v0.1d, v1.1d, v2.1d }, [x0], x0 +# CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3r { v1.1d, v2.1d, v3.1d }, [x28] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 1.50 1.50 ld3r { v8.2d, v9.2d, v10.2d }, [x3] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v6.8b, v7.8b, v8.8b, v9.8b }, [x27] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 2.00 2.00 ld4 { v11.16b, v12.16b, v13.16b, v14.16b }, [x5] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v21.4h, v22.4h, v23.4h, v24.4h }, [x14] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 2.00 2.00 ld4 { v9.8h, v10.8h, v11.8h, v12.8h }, [x1] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 2.00 2.00 ld4 { v17.4s, v18.4s, v19.4s, v20.4s }, [x4] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 - - - - - - - - - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x0] # CHECK-NEXT: - - - - - - - - - 0.67 0.67 0.67 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 1.50 1.50 ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] +# CHECK-NEXT: - - - - - - - - - 2.00 2.00 2.00 - - - - - - - - - 2.00 2.00 ld4 { v2.2d, v3.2d, v4.2d, v5.2d }, [x24] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v4.b, v5.b, v6.b, v7.b }[12], [x27] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v5.h, v6.h, v7.h, v8.h }[0], [x4] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4 { v0.s, v1.s, v2.s, v3.s }[0], [x26] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4r { v20.8b, v21.8b, v22.8b, v23.8b }, [x23] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 2.00 2.00 ld4r { v1.16b, v2.16b, v3.16b, v4.16b }, [x25] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4r { v16.4h, v17.4h, v18.4h, v19.4h }, [x6] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 2.00 2.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [sp] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 2.00 2.00 ld4r { v4.8h, v5.8h, v6.8h, v7.8h }, [x23] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [x30] +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], #16 +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 - - - - - - - - - 2.00 2.00 ld4r { v7.4s, v8.4s, v9.4s, v10.4s }, [x23] +# CHECK-NEXT: - - - - - - - - - 1.33 1.33 1.33 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4r { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], x8 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp], x7 # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 - - - - - - - - - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - - 1.00 1.00 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 - 2.00 2.00 ld4r { v0.2s, v1.2s, v2.2s, v3.2s }, [sp], x30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mla v15.8h, v22.8h, v4.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mla v28.2s, v10.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mls v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mls v25.8h, v29.8h, v0.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mls v22.2s, v29.2s, v0.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mls v26.4s, v5.4s, v28.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov b0, v0.b[15] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov d6, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov h2, v0.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov s17, v0.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 mov w8, v8.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 mov x30, v18.d[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov v2.b[0], v0.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov v2.h[1], v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov v2.s[2], v0.s[2] @@ -2951,11 +2226,24 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi d15, #0xff00ff00ff00ff # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v0.16b, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v14.8h, #174 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v13.4h, #74, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v0.2d, #0xff0000ff0000ffff # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v0.2s, #8, msl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v19.2s, #226 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v1.4s, #122, msl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v0.4s, #255, lsl #24 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 movi v0.8b, #255 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v26.4h, v20.4h, v14.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v5.8h, v21.8h, v3.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v29.2s, v10.2s, v3.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v30.4s, v11.4s, v4.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v30.4s, v11.4s, v4.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - mul v3.8h, v9.8h, v8.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvni v9.4h, #237 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvni v8.8h, #171, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvni v22.4s, #15, lsl #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvni v0.2s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvni v0.4s, #16, msl #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 neg d29, d24 @@ -2969,8 +2257,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvn v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mvn v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 orn v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 orn v29.8b, v19.8b, v16.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 orr v9.4h, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 orr v0.8h, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 orr v4.4s, #0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 pmul v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 pmul v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 pmull v0.8h, v0.8b, v0.8b @@ -3015,6 +2306,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabd v12.2s, v11.2s, v27.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sabdl v0.8h, v0.8b, v0.8b @@ -3050,6 +2342,8 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 saddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 saddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 saddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - scvtf h4, h8, #9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - scvtf h5, h14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - scvtf d21, d12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - scvtf d21, d12, #64 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - scvtf s22, s13 @@ -3061,26 +2355,25 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - scvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - scvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - scvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - scvtf v25.4h, v13.4h, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - scvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - scvtf v4.8h, v8.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sdot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shadd v25.16b, v1.16b, v10.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl d7, d10, #12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl v23.8b, v18.8b, #6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl v0.8h, v23.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll v0.2d, v0.2s, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll v0.4s, v0.4h, #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll v0.8h, v0.8b, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll v0.2d, v0.2s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll v0.4s, v0.4h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll v0.8h, v0.8b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll2 v0.2d, v0.4s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll2 v0.4s, v0.8h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll2 v0.8h, v0.16b, #8 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll2 v0.2d, v0.4s, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll2 v0.4s, v0.8h, #16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shll2 v0.8h, v0.16b, #8 @@ -3092,6 +2385,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shrn2 v0.8h, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shsub v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 shsub v15.8h, v5.8h, v27.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sli d10, d14, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sli v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sli v0.2d, v0.2d, #3 @@ -3103,8 +2397,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smax v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smax v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smax v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smax v30.16b, v3.16b, v30.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smaxp v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smaxp v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smaxp v21.8h, v16.8h, v7.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smaxp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 1.50 smaxv b0, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 2.00 smaxv b0, v0.16b @@ -3123,23 +2419,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 1.50 sminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 1.00 sminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal v0.2d, v25.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal v16.4s, v9.4h, v11.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal2 v30.2d, v22.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl v25.2d, v27.2s, v1.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl v14.4s, v23.4h, v12.h[7] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlal2 v1.4s, v9.8h, v0.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl2 v12.4s, v11.8h, v12.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl2 v11.2d, v28.4s, v7.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 smmla v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull v31.2d, v23.2s, v6.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull v3.4s, v26.4h, v1.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull2 v11.2d, v1.4s, v7.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull2 v13.4s, v18.8h, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - smull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqabs b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqabs d18, d12 @@ -3153,6 +2460,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqabs v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqabs v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqadd b20, b11, b15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqadd h12, h18, h10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqadd v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal d19, s24, s12 @@ -3160,17 +2468,34 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal s17, h27, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal v11.2d, v24.2s, v0.s[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal v20.4s, v30.4h, v12.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal2 v23.2d, v30.4s, v6.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlal2 v2.4s, v17.8h, v5.h[6] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmulh v8.4h, v16.4h, v5.h[4] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmulh v16.2s, v24.2s, v7.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmull v8.4s, v19.4h, v1.h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmull v20.2d, v10.2s, v6.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmull2 v10.4s, v25.8h, v0.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmull2 v4.2d, v29.4s, v2.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqrdmulh v0.8h, v15.8h, v0.h[5] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqrdmulh v6.2s, v29.2s, v4.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqrdmulh v31.2s, v17.2s, v4.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl d12, s23, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl d8, s9, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl s0, h0, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl s14, h12, h25 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl v26.2d, v7.2s, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl v4.4s, v22.4h, v13.h[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl2 v4.2d, v3.4s, v3.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmlsl2 v2.4s, v28.8h, v4.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmulh h10, h11, h12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmulh h7, h15, v0.h[3] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - sqdmulh s15, s14, v0.s[1] @@ -3231,6 +2556,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqrshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqrshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqrshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl s17, s4, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqsub b3, b13, b12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqsub v20.8h, v18.8h, v12.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqrshrn b10, h13, #2 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqrshrn h15, s10, #6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqrshrn s15, d12, #9 @@ -3256,6 +2584,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl h3, h4, h15 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl s14, s17, #22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl v23.16b, v23.16b, v23.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl v0.2d, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sqshl v0.2s, v0.2s, v0.2s @@ -3352,8 +2681,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshl v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshl v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshll v9.8h, v2.8b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshll v12.4s, v3.4h, #4 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshll v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshll2 v28.8h, v12.16b, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshll2 v17.2d, v13.4s, #22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshr d15, d16, #12 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshr v0.16b, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sshr v0.2d, v0.2d, #3 @@ -3382,32 +2715,96 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ssubw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ssubw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ssubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v18.8b }, [x15] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v8.8b, v9.8b }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v15.8b, v16.8b, v17.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v21.8b, v22.8b, v23.8b, v24.8b }, [x14] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v0.16b }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v1.16b, v2.16b }, [x4] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 st1 { v27.16b, v28.16b, v29.16b }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 st1 { v18.16b, v19.16b, v20.16b, v21.16b }, [x29] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v19.4h }, [x7] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v22.4h, v23.4h }, [x22] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v13.4h, v14.4h, v15.4h }, [x7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v23.4h, v24.4h, v25.4h, v26.4h }, [x24] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v27.8h }, [x17] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 st1 { v8.8h, v9.8h, v10.8h }, [x16] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 st1 { v7.8h, v8.8h, v9.8h, v10.8h }, [x19] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v25.2s }, [x6] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v13.2s, v14.2s }, [x9] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v12.2s, v13.2s, v14.2s }, [x3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v6.2s, v7.2s, v8.2s, v9.2s }, [x13] +# CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 1.00 1.00 st1 { v0.4s, v1.4s }, [sp], #32 +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v22.4s }, [x19] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v15.4s, v16.4s }, [x12] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 st1 { v26.4s, v27.4s, v28.4s, v29.4s }, [x12] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v20.1d }, [x10] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v21.1d, v22.1d }, [x29] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v5.1d, v6.1d, v7.1d }, [x3] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x10] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v26.2d, v27.2d }, [x28] # CHECK-NEXT: - - - - - - - - - - - 1.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.50 1.50 1.50 st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 st1 { v13.2d, v14.2d, v15.2d }, [x27] # CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 2.00 2.00 st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 0.50 0.50 st1 { v8.2d }, [x15] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 0.50 0.50 st1 { v0.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 1.00 1.00 st1 { v0.4s, v1.4s }, [sp], #32 # CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 1.50 1.50 st1 { v0.4s, v1.4s, v2.4s }, [sp] # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 1.00 1.00 st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st1 { v1.b }[5], [x1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st1 { v0.h }[2], [x1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st1 { v31.s }[1], [x16] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 0.50 0.50 st1 { v0.8h }, [x15], x2 # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 1.00 1.00 st1 { v0.8h, v1.8h }, [x15] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st1 { v0.d }[1], [x0] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 1.00 1.00 st1 { v0.d }[1], [x0], #8 # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 2.00 2.00 st2 { v0.16b, v1.16b }, [x0], x1 # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v0.8b, v1.8b }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st2 { v6.16b, v7.16b }, [x23] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v10.4h, v11.4h }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st2 { v10.8h, v11.8h }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v25.2s, v26.2s }, [x29] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st2 { v26.4s, v27.4s }, [x14] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st2 { v10.2d, v11.2d }, [x1] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v21.b, v22.b }[15], [x15] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v28.h, v29.h }[2], [x6] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v0.s, v1.s }[3], [sp] # CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 1.00 1.00 st2 { v0.s, v1.s }[3], [sp], #8 +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.00 1.00 st2 { v17.d, v18.d }[1], [x1] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v10.8b, v11.8b, v12.8b }, [x18] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 st3 { v26.16b, v27.16b, v28.16b }, [x4] # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v0.4h, v1.4h, v2.4h }, [x15] # CHECK-NEXT: - - - - - - - - - - - 1.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.50 3.00 3.00 st3 { v0.8h, v1.8h, v2.8h }, [x15], x2 +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 st3 { v0.8h, v1.8h, v2.8h }, [x0] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v19.2s, v20.2s, v21.2s }, [x30] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 st3 { v24.4s, v25.4s, v26.4s }, [x8] +# CHECK-NEXT: - - - - - - - - - - - 1.50 - - - - - - - - 1.50 3.00 3.00 st3 { v24.2d, v25.2d, v26.2d }, [x25] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v8.b, v9.b, v10.b }[4], [x18] # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v0.h, v1.h, v2.h }[7], [x15] # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 2.00 2.00 st3 { v0.h, v1.h, v2.h }[7], [x15], #6 +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v9.s, v10.s, v11.s }[2], [x20] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st3 { v16.d, v17.d, v18.d }[0], [x13] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 3.00 3.00 st4 { v17.8b, v18.8b, v19.8b, v20.8b }, [x8] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 6.00 6.00 st4 { v7.16b, v8.16b, v9.16b, v10.16b }, [x15] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 3.00 3.00 st4 { v5.4h, v6.4h, v7.4h, v8.4h }, [x13] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 6.00 6.00 st4 { v11.8h, v12.8h, v13.8h, v14.8h }, [x1] # CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 3.00 3.00 st4 { v0.2s, v1.2s, v2.2s, v3.2s }, [sp] # CHECK-NEXT: - - - - - - - - - - - 2.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 2.00 6.00 6.00 st4 { v0.4s, v1.4s, v2.4s, v3.4s }, [sp], #64 +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 6.00 6.00 st4 { v21.4s, v22.4s, v23.4s, v24.4s }, [x6] +# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - - - - - - 2.00 4.00 4.00 st4 { v25.2d, v26.2d, v27.2d, v28.2d }, [x16] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 st4 { v5.h, v6.h, v7.h, v8.h }[4], [x13] +# CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 st4 { v22.s, v23.s, v24.s, v25.s }[0], [x7] +# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - - - - - - 1.00 2.00 2.00 st4 { v23.d, v24.d, v25.d, v26.d }[1], [x5] # CHECK-NEXT: - - - - - - - - - - - 0.50 - - - - - - - - 0.50 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# CHECK-NEXT: - - - - - - - - - - - 0.50 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.50 1.50 1.50 st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - 1.00 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13 1.00 2.00 2.00 st4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], x5 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sub d15, d5, d16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sudot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sudot v0.4s, v0.16b, v0.4b[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 sub v15.2s, v14.2s, v11.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 subhn v7.4h, v10.4s, v13.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 subhn2 v24.4s, v24.2d, v8.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 suqadd b19, b14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 suqadd d18, d22 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 suqadd h20, h15 @@ -3450,6 +2847,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 trn2 v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 trn2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uaba v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uaba v13.16b, v14.16b, v19.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabal v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabal v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabal v0.8h, v0.8b, v0.8b @@ -3457,6 +2855,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabd v23.4s, v4.4s, v30.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabdl v0.2d, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabdl v0.4s, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uabdl v0.8h, v0.8b, v0.8b @@ -3492,8 +2891,12 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uaddw2 v0.2d, v0.2d, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uaddw2 v0.4s, v0.4s, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uaddw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - ucvtf h17, x12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - ucvtf h22, h16, #11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - ucvtf h7, h21 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - ucvtf d21, d14 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - ucvtf d21, d14, #64 +# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - - - - - - - - - ucvtf s8, x0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - ucvtf s22, s13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - ucvtf s22, s13, #32 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - ucvtf v0.2d, v0.2d @@ -3503,13 +2906,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - ucvtf v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - ucvtf v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - ucvtf v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 2.00 - ucvtf v18.4h, v11.4h, #7 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - ucvtf v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 4.00 - ucvtf v22.8h, v20.8h, #10 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 udot v0.2s, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 udot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uhsub v12.4h, v16.4h, v28.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uhsub v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 umax v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 umax v0.4s, v0.4s, v0.4s @@ -3525,7 +2931,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 umin v0.2s, v0.2s, v0.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 umin v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 umin v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 umin v0.16b, v26.16b, v2.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uminp v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uminp v28.4s, v16.4s, v15.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uminp v0.4h, v0.4h, v0.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uminp v0.8b, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 1.50 uminv b0, v0.8b @@ -3534,35 +2942,50 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 1.50 uminv h0, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - 1.00 uminv s0, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal v28.2d, v31.2s, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal v22.4s, v14.4h, v0.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal2 v10.2d, v4.4s, v3.s[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal2 v31.4s, v7.8h, v15.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal2 v0.2d, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal2 v0.4s, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlal2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl v20.2d, v20.2s, v2.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl v21.4s, v12.4h, v7.h[5] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl2 v30.2d, v23.4s, v1.s[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl2 v27.4s, v28.8h, v6.h[4] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umlsl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ummla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 umov w6, v22.b[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 umov w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 umov w10, v25.h[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 umov w0, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 mov w0, v0.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 mov x0, v0.d[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull v22.2d, v28.2s, v6.s[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull v27.4s, v1.4h, v8.h[6] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull v0.8h, v0.8b, v0.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull2 v28.2d, v21.4s, v1.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull2 v18.4s, v26.8h, v10.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 - umull2 v0.8h, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqadd h0, h1, h5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqadd s0, s24, s30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqadd v14.2d, v22.2d, v20.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl b11, b20, b30 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl v25.8b, v13.8b, v23.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshrn b10, h12, #5 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqrshrn h12, s10, #14 @@ -3585,6 +3008,7 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v0.2s, v0.2s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v8.4h, v17.4h, v13.4h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshl v0.8b, v0.8b, #3 @@ -3599,8 +3023,10 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshrn2 v0.16b, v0.8h, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshrn2 v0.4s, v0.2d, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqsub s16, s21, s6 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqsub d16, d16, d16 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqsub v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqsub v19.4s, v0.4s, v5.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqxtn b18, h18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqxtn h20, s17 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 uqxtn s19, d14 @@ -3615,7 +3041,9 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urhadd v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urhadd v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urhadd v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urhadd v16.2s, v19.2s, v2.2s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urshl d8, d7, d4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urshl v31.8b, v5.8b, v3.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urshl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urshl v0.2d, v0.2d, v0.2d # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 urshl v0.4s, v0.4s, v0.4s @@ -3638,15 +3066,16 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ursra v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ursra v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ursra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.4b[2] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.2s, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usdot v0.4s, v0.16b, v0.4b[2] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushl d0, d0, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushl v6.8b, v26.8b, v6.8b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushl v0.16b, v0.16b, v0.16b # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushl v0.4s, v0.4s, v0.4s # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushl v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushll v0.4s, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushll v18.8h, v24.8b, #4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushll v16.2d, v16.2s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushll2 v31.2d, v12.4s, #11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushll2 v18.4s, v22.8h, #13 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushll2 v0.8h, v0.16b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushr d10, d17, #18 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushr v0.16b, v0.16b, #3 @@ -3656,7 +3085,11 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushr v0.4s, v0.4s, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushr v0.8b, v0.8b, #3 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 ushr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 0.50 0.50 usmmla v0.4s, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov w15, v22.b[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov w26, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov x21, v0.b[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov x9, v27.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov x15, v3.s[0] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov w0, v0.b[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov w0, v0.h[1] # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - 1.00 1.00 smov x0, v0.b[1] diff --git a/llvm/utils/TableGen/Basic/ARMTargetDefEmitter.cpp b/llvm/utils/TableGen/Basic/ARMTargetDefEmitter.cpp index b63ce3671f922..a18fed082207f 100644 --- a/llvm/utils/TableGen/Basic/ARMTargetDefEmitter.cpp +++ b/llvm/utils/TableGen/Basic/ARMTargetDefEmitter.cpp @@ -159,12 +159,15 @@ static void emitARMTargetDef(const RecordKeeper &RK, raw_ostream &OS) { << " if(I.size()) return I;\n" << " I.reserve(" << FMVExts.size() << ");\n"; for (const Record *Rec : FMVExts) { + auto FeatName = Rec->getValueAsString("BackendFeature"); + const Record *FeatRec = ExtensionMap[FeatName]; OS << " I.emplace_back("; OS << "\"" << Rec->getValueAsString("Name") << "\""; - OS << ", " << Rec->getValueAsString("FeatureBit"); + if (FeatRec) + OS << ", " << Rec->getValueAsString("FeatureBit"); + else + OS << ", std::nullopt"; OS << ", " << Rec->getValueAsString("PriorityBit"); - auto FeatName = Rec->getValueAsString("BackendFeature"); - const Record *FeatRec = ExtensionMap[FeatName]; if (FeatRec) OS << ", " << FeatRec->getValueAsString("ArchExtKindSpelling").upper(); else diff --git a/mlir/include/mlir/Dialect/Bufferization/Pipelines/Passes.h b/mlir/include/mlir/Dialect/Bufferization/Pipelines/Passes.h index f220d20ad3a1f..e4d5b81f52577 100644 --- a/mlir/include/mlir/Dialect/Bufferization/Pipelines/Passes.h +++ b/mlir/include/mlir/Dialect/Bufferization/Pipelines/Passes.h @@ -47,6 +47,7 @@ struct BufferDeallocationPipelineOptions /// One-Shot bufferization pass. void buildBufferDeallocationPipeline( OpPassManager &pm, const BufferDeallocationPipelineOptions &options); +void buildBufferDeallocationPipeline(OpPassManager &pm); /// Registers all pipelines for the `bufferization` dialect. Currently, /// this includes only the "buffer-deallocation-pipeline". diff --git a/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc b/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc index 0005402cd1f44..e23827f8aabf2 100644 --- a/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc +++ b/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc @@ -866,15 +866,7 @@ extensionComplianceMap = { {{{fp8e5m2T, fp16T}, SpecificationVersion::V_1_0}, {{fp8e5m2T, fp32T}, SpecificationVersion::V_1_0}, {{fp16T, fp8e5m2T}, SpecificationVersion::V_1_0}, - {{fp32T, fp8e5m2T}, SpecificationVersion::V_1_0}}}, - {{Extension::bf16, Extension::mxfp}, - {{{fp4e2m1T, bf16T}, SpecificationVersion::V_1_1_DRAFT}, - {{fp6e3m2T, bf16T}, SpecificationVersion::V_1_1_DRAFT}, - {{fp6e2m3T, bf16T}, SpecificationVersion::V_1_1_DRAFT}, - {{bf16T, fp4e2m1T}, SpecificationVersion::V_1_1_DRAFT}, - {{bf16T, fp6e3m2T}, SpecificationVersion::V_1_1_DRAFT}, - {{bf16T, fp6e2m3T}, SpecificationVersion::V_1_1_DRAFT}}, - allOf}}}, + {{fp32T, fp8e5m2T}, SpecificationVersion::V_1_0}}}}}, {"tosa.cast_from_block_scaled", {{{Extension::bf16, Extension::mxfp}, {{{fp4e2m1T, fp8ue8m0T, bf16T}, SpecificationVersion::V_1_1_DRAFT}, diff --git a/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td b/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td index bb8faf01802fa..370ce8c161d0b 100644 --- a/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td +++ b/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td @@ -2464,7 +2464,7 @@ def Tosa_CastOp: Tosa_Op<"cast", [Pure, SameOperandsAndResultShape, list availability = [ Profile<[Tosa_PRO_INT, Tosa_PRO_FP]>, - Extension<[Tosa_EXT_FP8E4M3, Tosa_EXT_FP8E5M2, Tosa_EXT_BF16, Tosa_EXT_MXFP, Tosa_EXT_INT64]>, + Extension<[Tosa_EXT_FP8E4M3, Tosa_EXT_FP8E5M2, Tosa_EXT_BF16, Tosa_EXT_INT64]>, ]; let assemblyFormat = "operands attr-dict `:` functional-type(operands, results)"; diff --git a/mlir/lib/Dialect/Bufferization/Pipelines/BufferizationPipelines.cpp b/mlir/lib/Dialect/Bufferization/Pipelines/BufferizationPipelines.cpp index 51feec79e2174..f8eb45c7f323b 100644 --- a/mlir/lib/Dialect/Bufferization/Pipelines/BufferizationPipelines.cpp +++ b/mlir/lib/Dialect/Bufferization/Pipelines/BufferizationPipelines.cpp @@ -17,6 +17,10 @@ // Pipeline implementation. //===----------------------------------------------------------------------===// +void mlir::bufferization::buildBufferDeallocationPipeline(OpPassManager &pm) { + buildBufferDeallocationPipeline(pm, BufferDeallocationPipelineOptions()); +} + void mlir::bufferization::buildBufferDeallocationPipeline( OpPassManager &pm, const BufferDeallocationPipelineOptions &options) { memref::ExpandReallocPassOptions expandAllocPassOptions{ @@ -44,5 +48,7 @@ void mlir::bufferization::registerBufferizationPipelines() { "The default pipeline for automatically inserting deallocation " "operations after one-shot bufferization. Deallocation operations " "(except `memref.realloc`) may not be present already.", - buildBufferDeallocationPipeline); + [](OpPassManager &pm, const BufferDeallocationPipelineOptions &options) { + buildBufferDeallocationPipeline(pm, options); + }); } diff --git a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp index 470956fbed711..49726d9464376 100644 --- a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp +++ b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp @@ -176,7 +176,8 @@ static DiagnosedSilenceableFailure reifyMixedParamAndHandleResults( if (auto attr = dyn_cast(paramOrHandle)) { reified.push_back(cast(attr).getInt()); continue; - } else if (isa(cast(paramOrHandle).getType())) { + } + if (isa(cast(paramOrHandle).getType())) { ArrayRef params = state.getParams(cast(paramOrHandle)); if (params.size() != 1) return transformOp.emitSilenceableError() << "expected a single param"; diff --git a/mlir/lib/Dialect/NVGPU/TransformOps/NVGPUTransformOps.cpp b/mlir/lib/Dialect/NVGPU/TransformOps/NVGPUTransformOps.cpp index a2e16abf0cb13..0d053139e79de 100644 --- a/mlir/lib/Dialect/NVGPU/TransformOps/NVGPUTransformOps.cpp +++ b/mlir/lib/Dialect/NVGPU/TransformOps/NVGPUTransformOps.cpp @@ -792,7 +792,7 @@ FailureOr MmaSyncBuilder::buildMmaSync(LinalgOp linalgOp) { if (failed(maybeInfo)) return failure(); - MmaSyncInfo info = *maybeInfo; + const MmaSyncInfo &info = *maybeInfo; auto [lhsIndexFn, rhsIndexFn, resIndexFn] = info.indexFns; auto [lhsShape, rhsShape, resShape] = info.vectorShapes; Value lhs = buildMmaSyncMemRefLoadOperand(b, loc, laneId, lhsMemRef, diff --git a/mlir/lib/Dialect/SCF/IR/SCF.cpp b/mlir/lib/Dialect/SCF/IR/SCF.cpp index eec52664ac98c..920bd6c297231 100644 --- a/mlir/lib/Dialect/SCF/IR/SCF.cpp +++ b/mlir/lib/Dialect/SCF/IR/SCF.cpp @@ -3739,9 +3739,9 @@ struct WhileMoveIfDown : public OpRewritePattern { (ifOp.elseBlock() && !ifOp.elseBlock()->without_terminator().empty())) return failure(); - assert(ifOp->use_empty() || (llvm::all_equal(ifOp->getUsers()) && - *ifOp->user_begin() == conditionOp) && - "ifOp has unexpected uses"); + assert((ifOp->use_empty() || (llvm::all_equal(ifOp->getUsers()) && + *ifOp->user_begin() == conditionOp)) && + "ifOp has unexpected uses"); Location loc = op.getLoc(); diff --git a/mlir/lib/Target/LLVMIR/Dialect/GPU/SelectObjectAttr.cpp b/mlir/lib/Target/LLVMIR/Dialect/GPU/SelectObjectAttr.cpp index a4bb35e8e673c..d9bfe6541e227 100644 --- a/mlir/lib/Target/LLVMIR/Dialect/GPU/SelectObjectAttr.cpp +++ b/mlir/lib/Target/LLVMIR/Dialect/GPU/SelectObjectAttr.cpp @@ -124,10 +124,10 @@ static LogicalResult embedBinaryImpl(StringRef moduleName, } IRBuilder<> builder(module.getContext()); - auto i32Ty = builder.getInt32Ty(); - auto i64Ty = builder.getInt64Ty(); - auto ptrTy = builder.getPtrTy(0); - auto voidTy = builder.getVoidTy(); + auto *i32Ty = builder.getInt32Ty(); + auto *i64Ty = builder.getInt64Ty(); + auto *ptrTy = builder.getPtrTy(0); + auto *voidTy = builder.getVoidTy(); // Embed the module as a global object. auto *modulePtr = new GlobalVariable( diff --git a/mlir/test/Dialect/Tosa/availability.mlir b/mlir/test/Dialect/Tosa/availability.mlir index a05f42395778a..6ef8b3e6133be 100644 --- a/mlir/test/Dialect/Tosa/availability.mlir +++ b/mlir/test/Dialect/Tosa/availability.mlir @@ -606,7 +606,7 @@ func.func @test_resize(%arg0: tensor<1x32x32x8xf32>) -> tensor<1x64x64x8xf32> { // CHECK-LABEL: cast func.func @test_cast1(%arg0: tensor<13x21x3xi32>) -> tensor<13x21x3xf32> { // CHECK: profiles: [ [pro_int, pro_fp] ] - // CHECK: extensions: [ [fp8e4m3, fp8e5m2, bf16, mxfp, int64] ] + // CHECK: extensions: [ [fp8e4m3, fp8e5m2, bf16, int64] ] %0 = tosa.cast %arg0 : (tensor<13x21x3xi32>) -> tensor<13x21x3xf32> return %0 : tensor<13x21x3xf32> } diff --git a/mlir/test/Dialect/Tosa/invalid_extension.mlir b/mlir/test/Dialect/Tosa/invalid_extension.mlir index 68a95787b81c7..177192ba5440d 100644 --- a/mlir/test/Dialect/Tosa/invalid_extension.mlir +++ b/mlir/test/Dialect/Tosa/invalid_extension.mlir @@ -562,13 +562,6 @@ func.func @test_const_fp6e3m2(%arg0 : index) -> tensor<4xf6E3M2FN> { return %0 : tensor<4xf6E3M2FN> } -// ----- -func.func @test_cast_f4e2m1(%arg0: tensor<13x21x3xf4E2M1FN>) -> tensor<13x21x3xbf16> { - // expected-error@+1 {{'tosa.cast' op illegal: requires all of [bf16, mxfp] but not enabled in target}} - %0 = tosa.cast %arg0 : (tensor<13x21x3xf4E2M1FN>) -> tensor<13x21x3xbf16> - return %0 : tensor<13x21x3xbf16> -} - // ----- func.func @test_cast_from_block_scaled_static(%arg0: tensor<4x32xf8E5M2>, %arg1: tensor<4x1xf8E8M0FNU>) -> tensor<4x32xf32> { diff --git a/mlir/test/Dialect/Tosa/tosa-validation-version-1p1-valid.mlir b/mlir/test/Dialect/Tosa/tosa-validation-version-1p1-valid.mlir index c285ae3cf44ee..f6b1edc21ea5a 100644 --- a/mlir/test/Dialect/Tosa/tosa-validation-version-1p1-valid.mlir +++ b/mlir/test/Dialect/Tosa/tosa-validation-version-1p1-valid.mlir @@ -54,14 +54,6 @@ func.func @test_const_fp6e3m2() -> tensor<4xf6E3M2FN> { // ----- -// CHECK-LABEL: test_cast_f4e2m1 -func.func @test_cast_f4e2m1(%arg0: tensor<13x21x3xf4E2M1FN>) -> tensor<13x21x3xbf16> { - %0 = tosa.cast %arg0 : (tensor<13x21x3xf4E2M1FN>) -> tensor<13x21x3xbf16> - return %0 : tensor<13x21x3xbf16> -} - -// ----- - // CHECK-LABEL: test_cast_from_block_scaled_fp8e5m2_fp32 func.func @test_cast_from_block_scaled_fp8e5m2_fp32(%arg0: tensor<4x32xf8E5M2>, %arg1: tensor<4x1xf8E8M0FNU>) -> tensor<4x32xf32> { %0 = tosa.cast_from_block_scaled %arg0, %arg1 {block_size = #tosa.block_size : i32} : (tensor<4x32xf8E5M2>, tensor<4x1xf8E8M0FNU>) -> tensor<4x32xf32> @@ -110,14 +102,6 @@ func.func @test_const_mxint8() -> tensor<2x!tosa.mxint8> { // ----- -// CHECK-LABEL: test_cast_f4e2m1 -func.func @test_cast_f4e2m1(%arg0: tensor<13x21x3xf4E2M1FN>) -> tensor<13x21x3xbf16> { - %0 = tosa.cast %arg0 : (tensor<13x21x3xf4E2M1FN>) -> tensor<13x21x3xbf16> - return %0 : tensor<13x21x3xbf16> -} - -// ----- - // CHECK-LABEL: test_matmul_t_block_scaled_mxint8 func.func @test_matmul_t_block_scaled_mxint8(%arg0: tensor<4x8x32x!tosa.mxint8>, %arg1: tensor<4x8x1xf8E8M0FNU>, %arg2: tensor<4x16x32x!tosa.mxint8>, %arg3: tensor<4x16x1xf8E8M0FNU>) -> tensor<4x8x16xf32> { %0 = tosa.matmul_t_block_scaled %arg0, %arg1, %arg2, %arg3 {block_size = #tosa.block_size} : (tensor<4x8x32x!tosa.mxint8>, tensor<4x8x1xf8E8M0FNU>, tensor<4x16x32x!tosa.mxint8>, tensor<4x16x1xf8E8M0FNU>) -> tensor<4x8x16xf32> diff --git a/mlir/tools/mlir-irdl-to-cpp/mlir-irdl-to-cpp.cpp b/mlir/tools/mlir-irdl-to-cpp/mlir-irdl-to-cpp.cpp index a63b289ffaea2..4a512bd90874b 100644 --- a/mlir/tools/mlir-irdl-to-cpp/mlir-irdl-to-cpp.cpp +++ b/mlir/tools/mlir-irdl-to-cpp/mlir-irdl-to-cpp.cpp @@ -124,7 +124,7 @@ static LogicalResult translateIRDLToCpp(int argc, char **argv) { }; auto &splitInputFileDelimiter = splitInputFile.getValue(); - if (splitInputFileDelimiter.size()) + if (!splitInputFileDelimiter.empty()) return splitAndProcessBuffer(std::move(input), chunkFn, output->os(), splitInputFileDelimiter, splitInputFileDelimiter); diff --git a/revert_patches.txt b/revert_patches.txt index 9c2e87eced768..57ede019ece2b 100644 --- a/revert_patches.txt +++ b/revert_patches.txt @@ -5,9 +5,9 @@ d57230c7 [AMDGPU][MC] Disallow op_sel in some VOP3P dot instructions (#100485) breaks build of ROCmValidationSuite [C2y] Support WG14 N3457, the __COUNTER__ macro (#162662) --- -breaks build of rocALUTION -[VPlan] Use BlockFrequencyInfo in getPredBlockCostDivisor (#158690) +complicated build, deferring +[llvm][mlir][OpenMP] Support translation for linear clause in omp.wsloop --- -conplicated merge -[VPlan] Use BlockFrequencyInfo in getPredBlockCostDivisor (#158690) +needs more work to land +[Flang] Move builtin .mod generation into runtimes (Reapply #137828) ---