From 73731d6873b6fb0757c3065aaf2452eaccd0eebc Mon Sep 17 00:00:00 2001 From: Sam Elliott Date: Wed, 4 Dec 2024 09:19:13 +0000 Subject: [PATCH 001/593] [llvm-tblgen] Increase Coverage Index Size (#118329) --- llvm/include/llvm/CodeGen/SelectionDAGISel.h | 2 +- .../CodeGen/SelectionDAG/SelectionDAGISel.cpp | 2 ++ llvm/test/TableGen/dag-isel-instrument.td | 32 +++++++++++++++++++ llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | 16 +++++++--- 4 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 llvm/test/TableGen/dag-isel-instrument.td diff --git a/llvm/include/llvm/CodeGen/SelectionDAGISel.h b/llvm/include/llvm/CodeGen/SelectionDAGISel.h index f99ec4651009a..43ba8f4c44cf9 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGISel.h +++ b/llvm/include/llvm/CodeGen/SelectionDAGISel.h @@ -315,7 +315,7 @@ class SelectionDAGISel { OPC_MorphNodeTo1GlueOutput, OPC_MorphNodeTo2GlueOutput, OPC_CompleteMatch, - // Contains offset in table for pattern being selected + // Contains 32-bit offset in table for pattern being selected OPC_Coverage }; diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 0d99ae9cdebd5..3000dfda1bea0 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -4045,6 +4045,8 @@ void SelectionDAGISel::SelectCodeCommon(SDNode *NodeToMatch, // So it should be safe to assume that this node has been selected unsigned index = MatcherTable[MatcherIndex++]; index |= (MatcherTable[MatcherIndex++] << 8); + index |= (MatcherTable[MatcherIndex++] << 16); + index |= (MatcherTable[MatcherIndex++] << 24); dbgs() << "COVERED: " << getPatternForIndex(index) << "\n"; dbgs() << "INCLUDED: " << getIncludePathForIndex(index) << "\n"; continue; diff --git a/llvm/test/TableGen/dag-isel-instrument.td b/llvm/test/TableGen/dag-isel-instrument.td new file mode 100644 index 0000000000000..2862af03cf16d --- /dev/null +++ b/llvm/test/TableGen/dag-isel-instrument.td @@ -0,0 +1,32 @@ +// RUN: llvm-tblgen -gen-dag-isel -instrument-coverage -I %p/../../include %s | FileCheck %s + +include "llvm/Target/Target.td" + +def TestTargetInstrInfo : InstrInfo; + +def TestTarget : Target { + let InstructionSet = TestTargetInstrInfo; +} + +def REG : Register<"REG">; +def GPR : RegisterClass<"TestTarget", [i32], 32, (add REG)>; + +// CHECK-LABEL: OPC_CheckOpcode, TARGET_VAL(ISD::UDIVREM) +// CHECK: OPC_EmitNode2None, TARGET_VAL(::INSTR) +// CHECK-NEXT: Results = #2 #3 +// CHECK-NEXT: OPC_Coverage, COVERAGE_IDX_VAL(0), +// CHECK-NEXT: OPC_CompleteMatch, 2, 3, 2 +def INSTR : Instruction { + let OutOperandList = (outs GPR:$r1, GPR:$r0); + let InOperandList = (ins GPR:$t0, GPR:$t1); + let Pattern = [(set i32:$r0, i32:$r1, (udivrem i32:$t0, i32:$t1))]; +} + + +// CHECK: getPatternForIndex(unsigned Index) +// CHECK: static const char *PATTERN_MATCH_TABLE[] +// CHECK: return StringRef(PATTERN_MATCH_TABLE[Index]); + +// CHECK: getIncludePathForIndex(unsigned Index) +// CHECK: static const char *INCLUDE_PATH_TABLE[] +// CHECK: return StringRef(INCLUDE_PATH_TABLE[Index]); diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp index 74c399ee42317..f2385bdf1dde4 100644 --- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp @@ -381,8 +381,10 @@ static void EndEmitFunction(raw_ostream &OS) { void MatcherTableEmitter::EmitPatternMatchTable(raw_ostream &OS) { - assert(isUInt<16>(VecPatterns.size()) && - "Using only 16 bits to encode offset into Pattern Table"); + if (!isUInt<32>(VecPatterns.size())) + report_fatal_error("More patterns defined that can fit into 32-bit Pattern " + "Table index encoding"); + assert(VecPatterns.size() == VecIncludeStrings.size() && "The sizes of Pattern and include vectors should be the same"); @@ -947,7 +949,7 @@ unsigned MatcherTableEmitter::EmitMatcher(const Matcher *N, std::string include_src = getIncludePath(PatRecord); unsigned Offset = getPatternIdxFromTable(src + " -> " + dst, std::move(include_src)); - OS << "TARGET_VAL(" << Offset << "),\n"; + OS << "COVERAGE_IDX_VAL(" << Offset << "),\n"; OS.indent(FullIndexWidth + Indent); } } @@ -1060,7 +1062,7 @@ unsigned MatcherTableEmitter::EmitMatcher(const Matcher *N, std::string include_src = getIncludePath(PatRecord); unsigned Offset = getPatternIdxFromTable(src + " -> " + dst, std::move(include_src)); - OS << "TARGET_VAL(" << Offset << "),\n"; + OS << "COVERAGE_IDX_VAL(" << Offset << "),\n"; OS.indent(FullIndexWidth + Indent); } OS << "OPC_CompleteMatch, " << CM->getNumResults() << ", "; @@ -1393,8 +1395,11 @@ void llvm::EmitMatcherTable(Matcher *TheMatcher, const CodeGenDAGPatterns &CGP, // final stream. OS << "{\n"; OS << " // Some target values are emitted as 2 bytes, TARGET_VAL handles\n"; - OS << " // this.\n"; + OS << " // this. Coverage indexes are emitted as 4 bytes,\n"; + OS << " // COVERAGE_IDX_VAL handles this.\n"; OS << " #define TARGET_VAL(X) X & 255, unsigned(X) >> 8\n"; + OS << " #define COVERAGE_IDX_VAL(X) X & 255, (unsigned(X) >> 8) & 255, "; + OS << "(unsigned(X) >> 16) & 255, (unsigned(X) >> 24) & 255\n"; OS << " static const unsigned char MatcherTable[] = {\n"; TotalSize = MatcherEmitter.EmitMatcherList(TheMatcher, 1, 0, OS); OS << " 0\n }; // Total Array size is " << (TotalSize + 1) @@ -1402,6 +1407,7 @@ void llvm::EmitMatcherTable(Matcher *TheMatcher, const CodeGenDAGPatterns &CGP, MatcherEmitter.EmitHistogram(TheMatcher, OS); + OS << " #undef COVERAGE_IDX_VAL\n"; OS << " #undef TARGET_VAL\n"; OS << " SelectCodeCommon(N, MatcherTable, sizeof(MatcherTable));\n"; OS << "}\n"; From f68b0e36997322eeda8fd199ea80deb1b49c5410 Mon Sep 17 00:00:00 2001 From: Antonio Frighetto Date: Wed, 4 Dec 2024 10:15:11 +0100 Subject: [PATCH 002/593] [AggressiveInstCombine] Use APInt and avoid truncation when folding loads A miscompilation issue has been addressed with improved handling. Fixes: https://github.com/llvm/llvm-project/issues/118467. --- .../AggressiveInstCombine.cpp | 3 +- .../AggressiveInstCombine/AArch64/or-load.ll | 20 +++---- .../AggressiveInstCombine/X86/or-load.ll | 52 +++++++++++++++---- 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp index b5b561797f75a..45ee2d472a11b 100644 --- a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp +++ b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp @@ -803,8 +803,7 @@ static bool foldConsecutiveLoads(Instruction &I, const DataLayout &DL, APInt Offset1(DL.getIndexTypeSizeInBits(Load1Ptr->getType()), 0); Load1Ptr = Load1Ptr->stripAndAccumulateConstantOffsets( DL, Offset1, /* AllowNonInbounds */ true); - Load1Ptr = Builder.CreatePtrAdd(Load1Ptr, - Builder.getInt32(Offset1.getZExtValue())); + Load1Ptr = Builder.CreatePtrAdd(Load1Ptr, Builder.getInt(Offset1)); } // Generate wider load. NewLoad = Builder.CreateAlignedLoad(WiderType, Load1Ptr, LI1->getAlign(), diff --git a/llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll b/llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll index 1400ee7f703ca..10c4c9b0ca4c9 100644 --- a/llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll +++ b/llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll @@ -1121,19 +1121,19 @@ entry: define i32 @loadCombine_4consecutive_metadata(ptr %p, ptr %pstr) { ; LE-LABEL: @loadCombine_4consecutive_metadata( -; LE-NEXT: [[L1:%.*]] = load i32, ptr [[P:%.*]], align 1, !alias.scope !0 -; LE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias !0 +; LE-NEXT: [[L1:%.*]] = load i32, ptr [[P:%.*]], align 1, !alias.scope [[META0:![0-9]+]] +; LE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias [[META0]] ; LE-NEXT: ret i32 [[L1]] ; ; BE-LABEL: @loadCombine_4consecutive_metadata( ; BE-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 1 ; BE-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i32 2 ; BE-NEXT: [[P3:%.*]] = getelementptr i8, ptr [[P]], i32 3 -; BE-NEXT: [[L1:%.*]] = load i8, ptr [[P]], align 1, !alias.scope !0 -; BE-NEXT: [[L2:%.*]] = load i8, ptr [[P1]], align 1, !alias.scope !0 -; BE-NEXT: [[L3:%.*]] = load i8, ptr [[P2]], align 1, !alias.scope !0 -; BE-NEXT: [[L4:%.*]] = load i8, ptr [[P3]], align 1, !alias.scope !0 -; BE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias !0 +; BE-NEXT: [[L1:%.*]] = load i8, ptr [[P]], align 1, !alias.scope [[META0:![0-9]+]] +; BE-NEXT: [[L2:%.*]] = load i8, ptr [[P1]], align 1, !alias.scope [[META0]] +; BE-NEXT: [[L3:%.*]] = load i8, ptr [[P2]], align 1, !alias.scope [[META0]] +; BE-NEXT: [[L4:%.*]] = load i8, ptr [[P3]], align 1, !alias.scope [[META0]] +; BE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias [[META0]] ; BE-NEXT: [[E1:%.*]] = zext i8 [[L1]] to i32 ; BE-NEXT: [[E2:%.*]] = zext i8 [[L2]] to i32 ; BE-NEXT: [[E3:%.*]] = zext i8 [[L3]] to i32 @@ -1869,7 +1869,7 @@ define i32 @loadCombine_4consecutive_badinsert2(ptr %p) { define i32 @loadCombine_4consecutive_badinsert3(ptr %p) { ; LE-LABEL: @loadCombine_4consecutive_badinsert3( -; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 1 +; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 1 ; LE-NEXT: [[L1:%.*]] = load i32, ptr [[TMP1]], align 1 ; LE-NEXT: ret i32 [[L1]] ; @@ -2088,7 +2088,7 @@ define i32 @loadCombine_4consecutive_badinsert6(ptr %p) { define void @nested_gep(ptr %p, ptr %dest) { ; LE-LABEL: @nested_gep( -; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 68 +; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 68 ; LE-NEXT: [[LD2:%.*]] = load i64, ptr [[TMP1]], align 4 ; LE-NEXT: [[TRUNC:%.*]] = trunc i64 [[LD2]] to i32 ; LE-NEXT: store i32 [[TRUNC]], ptr [[DEST:%.*]], align 4 @@ -2128,7 +2128,7 @@ define void @nested_gep(ptr %p, ptr %dest) { define void @bitcast_gep(ptr %p, ptr %dest) { ; LE-LABEL: @bitcast_gep( -; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 68 +; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 68 ; LE-NEXT: [[LD2:%.*]] = load i64, ptr [[TMP1]], align 4 ; LE-NEXT: [[TRUNC:%.*]] = trunc i64 [[LD2]] to i32 ; LE-NEXT: store i32 [[TRUNC]], ptr [[DEST:%.*]], align 4 diff --git a/llvm/test/Transforms/AggressiveInstCombine/X86/or-load.ll b/llvm/test/Transforms/AggressiveInstCombine/X86/or-load.ll index 0aa6f9ecdf884..1b53c8f71222b 100644 --- a/llvm/test/Transforms/AggressiveInstCombine/X86/or-load.ll +++ b/llvm/test/Transforms/AggressiveInstCombine/X86/or-load.ll @@ -1205,19 +1205,19 @@ entry: define i32 @loadCombine_4consecutive_metadata(ptr %p, ptr %pstr) { ; LE-LABEL: @loadCombine_4consecutive_metadata( -; LE-NEXT: [[L1:%.*]] = load i32, ptr [[P:%.*]], align 1, !alias.scope !0 -; LE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias !0 +; LE-NEXT: [[L1:%.*]] = load i32, ptr [[P:%.*]], align 1, !alias.scope [[META0:![0-9]+]] +; LE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias [[META0]] ; LE-NEXT: ret i32 [[L1]] ; ; BE-LABEL: @loadCombine_4consecutive_metadata( ; BE-NEXT: [[P1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 1 ; BE-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i32 2 ; BE-NEXT: [[P3:%.*]] = getelementptr i8, ptr [[P]], i32 3 -; BE-NEXT: [[L1:%.*]] = load i8, ptr [[P]], align 1, !alias.scope !0 -; BE-NEXT: [[L2:%.*]] = load i8, ptr [[P1]], align 1, !alias.scope !0 -; BE-NEXT: [[L3:%.*]] = load i8, ptr [[P2]], align 1, !alias.scope !0 -; BE-NEXT: [[L4:%.*]] = load i8, ptr [[P3]], align 1, !alias.scope !0 -; BE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias !0 +; BE-NEXT: [[L1:%.*]] = load i8, ptr [[P]], align 1, !alias.scope [[META0:![0-9]+]] +; BE-NEXT: [[L2:%.*]] = load i8, ptr [[P1]], align 1, !alias.scope [[META0]] +; BE-NEXT: [[L3:%.*]] = load i8, ptr [[P2]], align 1, !alias.scope [[META0]] +; BE-NEXT: [[L4:%.*]] = load i8, ptr [[P3]], align 1, !alias.scope [[META0]] +; BE-NEXT: store i32 25, ptr [[PSTR:%.*]], align 4, !noalias [[META0]] ; BE-NEXT: [[E1:%.*]] = zext i8 [[L1]] to i32 ; BE-NEXT: [[E2:%.*]] = zext i8 [[L2]] to i32 ; BE-NEXT: [[E3:%.*]] = zext i8 [[L3]] to i32 @@ -2005,7 +2005,7 @@ define i32 @loadCombine_4consecutive_badinsert2(ptr %p) { define i32 @loadCombine_4consecutive_badinsert3(ptr %p) { ; LE-LABEL: @loadCombine_4consecutive_badinsert3( -; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 1 +; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 1 ; LE-NEXT: [[L1:%.*]] = load i32, ptr [[TMP1]], align 1 ; LE-NEXT: ret i32 [[L1]] ; @@ -2306,7 +2306,7 @@ define i64 @loadCombine_nonConstShift2(ptr %arg, i8 %b) { define void @nested_gep(ptr %p, ptr %dest) { ; LE-LABEL: @nested_gep( -; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 68 +; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 68 ; LE-NEXT: [[LD2:%.*]] = load i64, ptr [[TMP1]], align 4 ; LE-NEXT: [[TRUNC:%.*]] = trunc i64 [[LD2]] to i32 ; LE-NEXT: store i32 [[TRUNC]], ptr [[DEST:%.*]], align 4 @@ -2346,7 +2346,7 @@ define void @nested_gep(ptr %p, ptr %dest) { define void @bitcast_gep(ptr %p, ptr %dest) { ; LE-LABEL: @bitcast_gep( -; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i32 68 +; LE-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 68 ; LE-NEXT: [[LD2:%.*]] = load i64, ptr [[TMP1]], align 4 ; LE-NEXT: [[TRUNC:%.*]] = trunc i64 [[LD2]] to i32 ; LE-NEXT: store i32 [[TRUNC]], ptr [[DEST:%.*]], align 4 @@ -2382,3 +2382,35 @@ define void @bitcast_gep(ptr %p, ptr %dest) { store i32 %trunc, ptr %dest, align 4 ret void } + +define i32 @loadcombine_consecutive_idx_64(ptr %data) { +; LE-LABEL: @loadcombine_consecutive_idx_64( +; LE-NEXT: entry: +; LE-NEXT: [[TMP0:%.*]] = getelementptr i8, ptr [[DATA:%.*]], i64 2149675576 +; LE-NEXT: [[VAL_2:%.*]] = load i16, ptr [[TMP0]], align 1 +; LE-NEXT: [[TMP1:%.*]] = zext i16 [[VAL_2]] to i32 +; LE-NEXT: ret i32 [[TMP1]] +; +; BE-LABEL: @loadcombine_consecutive_idx_64( +; BE-NEXT: entry: +; BE-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i8, ptr [[DATA:%.*]], i64 2149675577 +; BE-NEXT: [[VAL:%.*]] = load i8, ptr [[ARRAYIDX]], align 1 +; BE-NEXT: [[CONV:%.*]] = zext i8 [[VAL]] to i32 +; BE-NEXT: [[ARRAYIDX_2:%.*]] = getelementptr inbounds nuw i8, ptr [[DATA]], i64 2149675576 +; BE-NEXT: [[VAL_2:%.*]] = load i8, ptr [[ARRAYIDX_2]], align 1 +; BE-NEXT: [[CONV_2:%.*]] = zext i8 [[VAL_2]] to i32 +; BE-NEXT: [[SHL:%.*]] = shl nuw nsw i32 [[CONV]], 8 +; BE-NEXT: [[OR:%.*]] = or disjoint i32 [[SHL]], [[CONV_2]] +; BE-NEXT: ret i32 [[OR]] +; +entry: + %arrayidx = getelementptr inbounds nuw i8, ptr %data, i64 2149675577 + %val = load i8, ptr %arrayidx, align 1 + %conv = zext i8 %val to i32 + %arrayidx.2 = getelementptr inbounds nuw i8, ptr %data, i64 2149675576 + %val.2 = load i8, ptr %arrayidx.2, align 1 + %conv.2 = zext i8 %val.2 to i32 + %shl = shl nuw nsw i32 %conv, 8 + %or = or disjoint i32 %shl, %conv.2 + ret i32 %or +} From 46829e5430aa3f086389549538d5289769d67076 Mon Sep 17 00:00:00 2001 From: LiqinWeng Date: Wed, 4 Dec 2024 17:26:54 +0800 Subject: [PATCH 003/593] [RISCV][CostModel] Correct the cost of some reductions (#118072) Reductions include: and/or/max/min --- .../Target/RISCV/RISCVTargetTransformInfo.cpp | 31 +- .../Analysis/CostModel/RISCV/cttz_elts.ll | 16 +- .../Analysis/CostModel/RISCV/reduce-and.ll | 128 ++++---- .../Analysis/CostModel/RISCV/reduce-max.ll | 256 ++++++++-------- .../Analysis/CostModel/RISCV/reduce-min.ll | 256 ++++++++-------- .../Analysis/CostModel/RISCV/reduce-or.ll | 128 ++++---- .../CostModel/RISCV/reduce-scalable-fp.ll | 144 ++++----- .../CostModel/RISCV/reduce-scalable-int.ll | 288 +++++++++--------- .../Analysis/CostModel/RISCV/vp-intrinsics.ll | 32 +- 9 files changed, 645 insertions(+), 634 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp index aed476db1956f..918b901ddcb4d 100644 --- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp +++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp @@ -1476,7 +1476,7 @@ RISCVTTIImpl::getMinMaxReductionCost(Intrinsic::ID IID, VectorType *Ty, return ExtraCost + getRISCVInstructionCost(Opcodes, LT.second, CostKind); } - // IR Reduction is composed by two vmv and one rvv reduction instruction. + // IR Reduction is composed by one rvv reduction instruction and vmv unsigned SplitOp; SmallVector Opcodes; switch (IID) { @@ -1484,27 +1484,27 @@ RISCVTTIImpl::getMinMaxReductionCost(Intrinsic::ID IID, VectorType *Ty, llvm_unreachable("Unsupported intrinsic"); case Intrinsic::smax: SplitOp = RISCV::VMAX_VV; - Opcodes = {RISCV::VMV_S_X, RISCV::VREDMAX_VS, RISCV::VMV_X_S}; + Opcodes = {RISCV::VREDMAX_VS, RISCV::VMV_X_S}; break; case Intrinsic::smin: SplitOp = RISCV::VMIN_VV; - Opcodes = {RISCV::VMV_S_X, RISCV::VREDMIN_VS, RISCV::VMV_X_S}; + Opcodes = {RISCV::VREDMIN_VS, RISCV::VMV_X_S}; break; case Intrinsic::umax: SplitOp = RISCV::VMAXU_VV; - Opcodes = {RISCV::VMV_S_X, RISCV::VREDMAXU_VS, RISCV::VMV_X_S}; + Opcodes = {RISCV::VREDMAXU_VS, RISCV::VMV_X_S}; break; case Intrinsic::umin: SplitOp = RISCV::VMINU_VV; - Opcodes = {RISCV::VMV_S_X, RISCV::VREDMINU_VS, RISCV::VMV_X_S}; + Opcodes = {RISCV::VREDMINU_VS, RISCV::VMV_X_S}; break; case Intrinsic::maxnum: SplitOp = RISCV::VFMAX_VV; - Opcodes = {RISCV::VFMV_S_F, RISCV::VFREDMAX_VS, RISCV::VFMV_F_S}; + Opcodes = {RISCV::VFREDMAX_VS, RISCV::VFMV_F_S}; break; case Intrinsic::minnum: SplitOp = RISCV::VFMIN_VV; - Opcodes = {RISCV::VFMV_S_F, RISCV::VFREDMIN_VS, RISCV::VFMV_F_S}; + Opcodes = {RISCV::VFREDMIN_VS, RISCV::VFMV_F_S}; break; } // Add a cost for data larger than LMUL8 @@ -1548,6 +1548,15 @@ RISCVTTIImpl::getArithmeticReductionCost(unsigned Opcode, VectorType *Ty, getRISCVInstructionCost(RISCV::VCPOP_M, LT.second, CostKind) + getCmpSelInstrCost(Instruction::ICmp, ElementTy, ElementTy, CmpInst::ICMP_EQ, CostKind); + } else if (ISD == ISD::XOR) { + // Example sequences: + // vsetvli a0, zero, e8, mf8, ta, ma + // vmxor.mm v8, v0, v8 ; needed every time type is split + // vcpop.m a0, v8 + // andi a0, a0, 1 + return (LT.first - 1) * + getRISCVInstructionCost(RISCV::VMXOR_MM, LT.second, CostKind) + + getRISCVInstructionCost(RISCV::VCPOP_M, LT.second, CostKind) + 1; } else { // Example sequences: // vsetvli a0, zero, e8, mf8, ta, ma @@ -1562,7 +1571,9 @@ RISCVTTIImpl::getArithmeticReductionCost(unsigned Opcode, VectorType *Ty, } } - // IR Reduction is composed by two vmv and one rvv reduction instruction. + // IR Reduction of or/and is composed by one vmv and one rvv reduction + // instruction, and others is composed by two vmv and one rvv reduction + // instruction unsigned SplitOp; SmallVector Opcodes; switch (ISD) { @@ -1572,7 +1583,7 @@ RISCVTTIImpl::getArithmeticReductionCost(unsigned Opcode, VectorType *Ty, break; case ISD::OR: SplitOp = RISCV::VOR_VV; - Opcodes = {RISCV::VMV_S_X, RISCV::VREDOR_VS, RISCV::VMV_X_S}; + Opcodes = {RISCV::VREDOR_VS, RISCV::VMV_X_S}; break; case ISD::XOR: SplitOp = RISCV::VXOR_VV; @@ -1580,7 +1591,7 @@ RISCVTTIImpl::getArithmeticReductionCost(unsigned Opcode, VectorType *Ty, break; case ISD::AND: SplitOp = RISCV::VAND_VV; - Opcodes = {RISCV::VMV_S_X, RISCV::VREDAND_VS, RISCV::VMV_X_S}; + Opcodes = {RISCV::VREDAND_VS, RISCV::VMV_X_S}; break; case ISD::FADD: // We can't promote f16/bf16 fadd reductions. diff --git a/llvm/test/Analysis/CostModel/RISCV/cttz_elts.ll b/llvm/test/Analysis/CostModel/RISCV/cttz_elts.ll index fce9f71d37634..6d3dfc3061388 100644 --- a/llvm/test/Analysis/CostModel/RISCV/cttz_elts.ll +++ b/llvm/test/Analysis/CostModel/RISCV/cttz_elts.ll @@ -9,28 +9,28 @@ define void @foo_no_vscale_range() { ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i64.nxv16i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv16i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i64.nxv32i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv32i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i64.nxv64i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv64i1( undef, i1 true) -; CHECK-NEXT: Cost Model: Found an estimated cost of 662 for instruction: %res.i64.nxv128i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 true) +; CHECK-NEXT: Cost Model: Found an estimated cost of 661 for instruction: %res.i64.nxv128i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv2i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv2i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv4i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv4i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv8i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv8i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv16i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv16i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv32i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv32i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv64i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv64i1( undef, i1 true) -; CHECK-NEXT: Cost Model: Found an estimated cost of 335 for instruction: %res.i32.nxv128i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 true) +; CHECK-NEXT: Cost Model: Found an estimated cost of 334 for instruction: %res.i32.nxv128i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv2i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv2i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv4i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv4i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv8i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv8i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv16i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv16i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv32i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv32i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv64i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv64i1( undef, i1 false) -; CHECK-NEXT: Cost Model: Found an estimated cost of 662 for instruction: %res.i64.nxv128i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 false) +; CHECK-NEXT: Cost Model: Found an estimated cost of 661 for instruction: %res.i64.nxv128i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv2i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv2i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv4i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv4i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv8i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv8i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv16i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv16i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv32i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv32i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv64i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv64i1( undef, i1 false) -; CHECK-NEXT: Cost Model: Found an estimated cost of 335 for instruction: %res.i32.nxv128i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 false) +; CHECK-NEXT: Cost Model: Found an estimated cost of 334 for instruction: %res.i32.nxv128i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void ; %res.i64.nxv2i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv2i1( undef, i1 true) @@ -75,28 +75,28 @@ define void @foo_vscale_range_2_16() vscale_range(2,16) { ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i64.nxv16i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv16i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i64.nxv32i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv32i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i64.nxv64i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv64i1( undef, i1 true) -; CHECK-NEXT: Cost Model: Found an estimated cost of 172 for instruction: %res.i64.nxv128i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 true) +; CHECK-NEXT: Cost Model: Found an estimated cost of 171 for instruction: %res.i64.nxv128i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv2i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv2i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv4i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv4i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv8i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv8i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv16i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv16i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv32i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv32i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %res.i32.nxv64i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv64i1( undef, i1 true) -; CHECK-NEXT: Cost Model: Found an estimated cost of 172 for instruction: %res.i32.nxv128i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 true) +; CHECK-NEXT: Cost Model: Found an estimated cost of 171 for instruction: %res.i32.nxv128i1.zip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 true) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv2i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv2i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv4i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv4i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv8i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv8i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv16i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv16i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv32i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv32i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i64.nxv64i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv64i1( undef, i1 false) -; CHECK-NEXT: Cost Model: Found an estimated cost of 172 for instruction: %res.i64.nxv128i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 false) +; CHECK-NEXT: Cost Model: Found an estimated cost of 171 for instruction: %res.i64.nxv128i1.nzip = call i64 @llvm.experimental.cttz.elts.i64.nxv128i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv2i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv2i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv4i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv4i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv8i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv8i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv16i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv16i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv32i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv32i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %res.i32.nxv64i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv64i1( undef, i1 false) -; CHECK-NEXT: Cost Model: Found an estimated cost of 172 for instruction: %res.i32.nxv128i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 false) +; CHECK-NEXT: Cost Model: Found an estimated cost of 171 for instruction: %res.i32.nxv128i1.nzip = call i32 @llvm.experimental.cttz.elts.i32.nxv128i1( undef, i1 false) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void ; %res.i64.nxv2i1.zip = call i64 @llvm.experimental.cttz.elts.i64.nxv2i1( undef, i1 true) diff --git a/llvm/test/Analysis/CostModel/RISCV/reduce-and.ll b/llvm/test/Analysis/CostModel/RISCV/reduce-and.ll index a8eb4e9a280dd..e4f1cf8ff418a 100644 --- a/llvm/test/Analysis/CostModel/RISCV/reduce-and.ll +++ b/llvm/test/Analysis/CostModel/RISCV/reduce-and.ll @@ -49,25 +49,25 @@ define i32 @reduce_i1(i32 %arg) { define i32 @reduce_i8(i32 %arg) { ; CHECK-LABEL: 'reduce_i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.and.v1i8(<1 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i8 @llvm.vector.reduce.and.v64i8(<64 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i8 @llvm.vector.reduce.and.v128i8(<128 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.and.v1i8(<1 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.and.v64i8(<64 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.and.v128i8(<128 x i8> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i8 @llvm.vector.reduce.and.v1i8(<1 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i8 @llvm.vector.reduce.and.v64i8(<64 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i8 @llvm.vector.reduce.and.v128i8(<128 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.and.v1i8(<1 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.and.v64i8(<64 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.and.v128i8(<128 x i8> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i8 @llvm.vector.reduce.and.v1i8(<1 x i8> undef) @@ -83,25 +83,25 @@ define i32 @reduce_i8(i32 %arg) { define i32 @reduce_i16(i32 %arg) { ; CHECK-LABEL: 'reduce_i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.and.v1i16(<1 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i16 @llvm.vector.reduce.and.v32i16(<32 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i16 @llvm.vector.reduce.and.v64i16(<64 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %V128 = call i16 @llvm.vector.reduce.and.v128i16(<128 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.and.v1i16(<1 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.and.v32i16(<32 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.and.v64i16(<64 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.and.v128i16(<128 x i16> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i16 @llvm.vector.reduce.and.v1i16(<1 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i16 @llvm.vector.reduce.and.v32i16(<32 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i16 @llvm.vector.reduce.and.v64i16(<64 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V128 = call i16 @llvm.vector.reduce.and.v128i16(<128 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.and.v1i16(<1 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.and.v32i16(<32 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.and.v64i16(<64 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.and.v128i16(<128 x i16> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i16 @llvm.vector.reduce.and.v1i16(<1 x i16> undef) @@ -117,25 +117,25 @@ define i32 @reduce_i16(i32 %arg) { define i32 @reduce_i32(i32 %arg) { ; CHECK-LABEL: 'reduce_i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i32 @llvm.vector.reduce.and.v16i32(<16 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i32 @llvm.vector.reduce.and.v32i32(<32 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V64 = call i32 @llvm.vector.reduce.and.v64i32(<64 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: %V128 = call i32 @llvm.vector.reduce.and.v128i32(<128 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.and.v16i32(<16 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.and.v32i32(<32 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.and.v64i32(<64 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.and.v128i32(<128 x i32> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i32 @llvm.vector.reduce.and.v16i32(<16 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i32 @llvm.vector.reduce.and.v32i32(<32 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64 = call i32 @llvm.vector.reduce.and.v64i32(<64 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = call i32 @llvm.vector.reduce.and.v128i32(<128 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.and.v16i32(<16 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.and.v32i32(<32 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.and.v64i32(<64 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.and.v128i32(<128 x i32> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> undef) @@ -151,25 +151,25 @@ define i32 @reduce_i32(i32 %arg) { define i32 @reduce_i64(i32 %arg) { ; CHECK-LABEL: 'reduce_i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i64 @llvm.vector.reduce.and.v8i64(<8 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i64 @llvm.vector.reduce.and.v16i64(<16 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V32 = call i64 @llvm.vector.reduce.and.v32i64(<32 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V64 = call i64 @llvm.vector.reduce.and.v64i64(<64 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 62 for instruction: %V128 = call i64 @llvm.vector.reduce.and.v128i64(<128 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.and.v8i64(<8 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.and.v16i64(<16 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.and.v32i64(<32 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.and.v64i64(<64 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.and.v128i64(<128 x i64> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i64 @llvm.vector.reduce.and.v8i64(<8 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i64 @llvm.vector.reduce.and.v16i64(<16 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32 = call i64 @llvm.vector.reduce.and.v32i64(<32 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = call i64 @llvm.vector.reduce.and.v64i64(<64 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call i64 @llvm.vector.reduce.and.v128i64(<128 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.and.v8i64(<8 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.and.v16i64(<16 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.and.v32i64(<32 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.and.v64i64(<64 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.and.v128i64(<128 x i64> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef) diff --git a/llvm/test/Analysis/CostModel/RISCV/reduce-max.ll b/llvm/test/Analysis/CostModel/RISCV/reduce-max.ll index c5d677e574c13..f11e9f2b5ae83 100644 --- a/llvm/test/Analysis/CostModel/RISCV/reduce-max.ll +++ b/llvm/test/Analysis/CostModel/RISCV/reduce-max.ll @@ -40,25 +40,25 @@ define i32 @reduce_umin_i1(i32 %arg) { define i32 @reduce_umax_i8(i32 %arg) { ; CHECK-LABEL: 'reduce_umax_i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umax_i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.umax.v2i8(<2 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.umax.v4i8(<4 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.umax.v64i8(<64 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.umax.v128i8(<128 x i8> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i8 @llvm.vector.reduce.umax.v1i8(<1 x i8> undef) @@ -74,25 +74,25 @@ define i32 @reduce_umax_i8(i32 %arg) { define i32 @reduce_umax_i16(i32 %arg) { ; CHECK-LABEL: 'reduce_umax_i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umax_i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.umax.v2i16(<2 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.umax.v4i16(<4 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.umax.v32i16(<32 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.umax.v64i16(<64 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.umax.v128i16(<128 x i16> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i16 @llvm.vector.reduce.umax.v1i16(<1 x i16> undef) @@ -108,25 +108,25 @@ define i32 @reduce_umax_i16(i32 %arg) { define i32 @reduce_umax_i32(i32 %arg) { ; CHECK-LABEL: 'reduce_umax_i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V64 = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umax_i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64 = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.umax.v2i32(<2 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.umax.v32i32(<32 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.umax.v64i32(<64 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.umax.v128i32(<128 x i32> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> undef) @@ -142,25 +142,25 @@ define i32 @reduce_umax_i32(i32 %arg) { define i32 @reduce_umax_i64(i32 %arg) { ; CHECK-LABEL: 'reduce_umax_i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V32 = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V64 = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 62 for instruction: %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umax_i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32 = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.umax.v2i64(<2 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.umax.v4i64(<4 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.umax.v16i64(<16 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.umax.v32i64(<32 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.umax.v64i64(<64 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.umax.v128i64(<128 x i64> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i64 @llvm.vector.reduce.umax.v1i64(<1 x i64> undef) @@ -210,25 +210,25 @@ define i32 @reduce_smin_i1(i32 %arg) { define i32 @reduce_smax_i8(i32 %arg) { ; CHECK-LABEL: 'reduce_smax_i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smax_i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.smax.v2i8(<2 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.smax.v4i8(<4 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.smax.v8i8(<8 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.smax.v64i8(<64 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.smax.v128i8(<128 x i8> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i8 @llvm.vector.reduce.smax.v1i8(<1 x i8> undef) @@ -244,25 +244,25 @@ define i32 @reduce_smax_i8(i32 %arg) { define i32 @reduce_smax_i16(i32 %arg) { ; CHECK-LABEL: 'reduce_smax_i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smax_i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.smax.v2i16(<2 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.smax.v4i16(<4 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.smax.v32i16(<32 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.smax.v64i16(<64 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.smax.v128i16(<128 x i16> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i16 @llvm.vector.reduce.smax.v1i16(<1 x i16> undef) @@ -278,25 +278,25 @@ define i32 @reduce_smax_i16(i32 %arg) { define i32 @reduce_smax_i32(i32 %arg) { ; CHECK-LABEL: 'reduce_smax_i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V64 = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smax_i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64 = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.smax.v2i32(<2 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.smax.v32i32(<32 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.smax.v64i32(<64 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.smax.v128i32(<128 x i32> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> undef) @@ -312,25 +312,25 @@ define i32 @reduce_smax_i32(i32 %arg) { define i32 @reduce_smax_i64(i32 %arg) { ; CHECK-LABEL: 'reduce_smax_i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V32 = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V64 = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 62 for instruction: %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smax_i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32 = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.smax.v2i64(<2 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.smax.v4i64(<4 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.smax.v16i64(<16 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.smax.v32i64(<32 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.smax.v64i64(<64 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.smax.v128i64(<128 x i64> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i64 @llvm.vector.reduce.smax.v1i64(<1 x i64> undef) diff --git a/llvm/test/Analysis/CostModel/RISCV/reduce-min.ll b/llvm/test/Analysis/CostModel/RISCV/reduce-min.ll index 89bff38138415..457fdbe46f73b 100644 --- a/llvm/test/Analysis/CostModel/RISCV/reduce-min.ll +++ b/llvm/test/Analysis/CostModel/RISCV/reduce-min.ll @@ -40,25 +40,25 @@ define i32 @reduce_umin_i1(i32 %arg) { define i32 @reduce_umin_i8(i32 %arg) { ; CHECK-LABEL: 'reduce_umin_i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.umin.v1i8(<1 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.umin.v2i8(<2 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i8 @llvm.vector.reduce.umin.v4i8(<4 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i8 @llvm.vector.reduce.umin.v32i8(<32 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i8 @llvm.vector.reduce.umin.v64i8(<64 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i8 @llvm.vector.reduce.umin.v128i8(<128 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.umin.v1i8(<1 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.umin.v2i8(<2 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.umin.v4i8(<4 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.umin.v32i8(<32 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.umin.v64i8(<64 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.umin.v128i8(<128 x i8> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umin_i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i8 @llvm.vector.reduce.umin.v1i8(<1 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.umin.v2i8(<2 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.umin.v4i8(<4 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i8 @llvm.vector.reduce.umin.v32i8(<32 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i8 @llvm.vector.reduce.umin.v64i8(<64 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i8 @llvm.vector.reduce.umin.v128i8(<128 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.umin.v1i8(<1 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.umin.v2i8(<2 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.umin.v4i8(<4 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.umin.v32i8(<32 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.umin.v64i8(<64 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.umin.v128i8(<128 x i8> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i8 @llvm.vector.reduce.umin.v1i8(<1 x i8> undef) @@ -74,25 +74,25 @@ define i32 @reduce_umin_i8(i32 %arg) { define i32 @reduce_umin_i16(i32 %arg) { ; CHECK-LABEL: 'reduce_umin_i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.umin.v1i16(<1 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.umin.v2i16(<2 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i16 @llvm.vector.reduce.umin.v32i16(<32 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i16 @llvm.vector.reduce.umin.v64i16(<64 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %V128 = call i16 @llvm.vector.reduce.umin.v128i16(<128 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.umin.v1i16(<1 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.umin.v2i16(<2 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.umin.v32i16(<32 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.umin.v64i16(<64 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.umin.v128i16(<128 x i16> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umin_i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i16 @llvm.vector.reduce.umin.v1i16(<1 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.umin.v2i16(<2 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i16 @llvm.vector.reduce.umin.v32i16(<32 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i16 @llvm.vector.reduce.umin.v64i16(<64 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V128 = call i16 @llvm.vector.reduce.umin.v128i16(<128 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.umin.v1i16(<1 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.umin.v2i16(<2 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.umin.v4i16(<4 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.umin.v32i16(<32 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.umin.v64i16(<64 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.umin.v128i16(<128 x i16> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i16 @llvm.vector.reduce.umin.v1i16(<1 x i16> undef) @@ -108,25 +108,25 @@ define i32 @reduce_umin_i16(i32 %arg) { define i32 @reduce_umin_i32(i32 %arg) { ; CHECK-LABEL: 'reduce_umin_i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.umin.v2i32(<2 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i32 @llvm.vector.reduce.umin.v16i32(<16 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i32 @llvm.vector.reduce.umin.v32i32(<32 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V64 = call i32 @llvm.vector.reduce.umin.v64i32(<64 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: %V128 = call i32 @llvm.vector.reduce.umin.v128i32(<128 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.umin.v2i32(<2 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.umin.v16i32(<16 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.umin.v32i32(<32 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.umin.v64i32(<64 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.umin.v128i32(<128 x i32> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umin_i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.umin.v2i32(<2 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i32 @llvm.vector.reduce.umin.v16i32(<16 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i32 @llvm.vector.reduce.umin.v32i32(<32 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64 = call i32 @llvm.vector.reduce.umin.v64i32(<64 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = call i32 @llvm.vector.reduce.umin.v128i32(<128 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.umin.v2i32(<2 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.umin.v16i32(<16 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.umin.v32i32(<32 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.umin.v64i32(<64 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.umin.v128i32(<128 x i32> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> undef) @@ -142,25 +142,25 @@ define i32 @reduce_umin_i32(i32 %arg) { define i32 @reduce_umin_i64(i32 %arg) { ; CHECK-LABEL: 'reduce_umin_i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.umin.v1i64(<1 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.umin.v2i64(<2 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.vector.reduce.umin.v4i64(<4 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i64 @llvm.vector.reduce.umin.v8i64(<8 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i64 @llvm.vector.reduce.umin.v16i64(<16 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V32 = call i64 @llvm.vector.reduce.umin.v32i64(<32 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V64 = call i64 @llvm.vector.reduce.umin.v64i64(<64 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 62 for instruction: %V128 = call i64 @llvm.vector.reduce.umin.v128i64(<128 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.umin.v1i64(<1 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.umin.v2i64(<2 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.umin.v4i64(<4 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.umin.v8i64(<8 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.umin.v16i64(<16 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.umin.v32i64(<32 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.umin.v64i64(<64 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.umin.v128i64(<128 x i64> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_umin_i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i64 @llvm.vector.reduce.umin.v1i64(<1 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.umin.v2i64(<2 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.umin.v4i64(<4 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i64 @llvm.vector.reduce.umin.v8i64(<8 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i64 @llvm.vector.reduce.umin.v16i64(<16 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32 = call i64 @llvm.vector.reduce.umin.v32i64(<32 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = call i64 @llvm.vector.reduce.umin.v64i64(<64 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call i64 @llvm.vector.reduce.umin.v128i64(<128 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.umin.v1i64(<1 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.umin.v2i64(<2 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.umin.v4i64(<4 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.umin.v8i64(<8 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.umin.v16i64(<16 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.umin.v32i64(<32 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.umin.v64i64(<64 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.umin.v128i64(<128 x i64> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i64 @llvm.vector.reduce.umin.v1i64(<1 x i64> undef) @@ -210,25 +210,25 @@ define i32 @reduce_smin_i1(i32 %arg) { define i32 @reduce_smin_i8(i32 %arg) { ; CHECK-LABEL: 'reduce_smin_i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.smin.v1i8(<1 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.smin.v2i8(<2 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i8 @llvm.vector.reduce.smin.v4i8(<4 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i8 @llvm.vector.reduce.smin.v32i8(<32 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i8 @llvm.vector.reduce.smin.v64i8(<64 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i8 @llvm.vector.reduce.smin.v128i8(<128 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.smin.v1i8(<1 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.smin.v2i8(<2 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.smin.v4i8(<4 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.smin.v32i8(<32 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.smin.v64i8(<64 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.smin.v128i8(<128 x i8> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smin_i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i8 @llvm.vector.reduce.smin.v1i8(<1 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.smin.v2i8(<2 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.smin.v4i8(<4 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i8 @llvm.vector.reduce.smin.v32i8(<32 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i8 @llvm.vector.reduce.smin.v64i8(<64 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i8 @llvm.vector.reduce.smin.v128i8(<128 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.smin.v1i8(<1 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.smin.v2i8(<2 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.smin.v4i8(<4 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.smin.v8i8(<8 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.smin.v32i8(<32 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.smin.v64i8(<64 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.smin.v128i8(<128 x i8> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i8 @llvm.vector.reduce.smin.v1i8(<1 x i8> undef) @@ -244,25 +244,25 @@ define i32 @reduce_smin_i8(i32 %arg) { define i32 @reduce_smin_i16(i32 %arg) { ; CHECK-LABEL: 'reduce_smin_i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.smin.v1i16(<1 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.smin.v2i16(<2 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i16 @llvm.vector.reduce.smin.v32i16(<32 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i16 @llvm.vector.reduce.smin.v64i16(<64 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %V128 = call i16 @llvm.vector.reduce.smin.v128i16(<128 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.smin.v1i16(<1 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.smin.v2i16(<2 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.smin.v32i16(<32 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.smin.v64i16(<64 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.smin.v128i16(<128 x i16> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smin_i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i16 @llvm.vector.reduce.smin.v1i16(<1 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.smin.v2i16(<2 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i16 @llvm.vector.reduce.smin.v32i16(<32 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i16 @llvm.vector.reduce.smin.v64i16(<64 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V128 = call i16 @llvm.vector.reduce.smin.v128i16(<128 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.smin.v1i16(<1 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.smin.v2i16(<2 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.smin.v4i16(<4 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.smin.v32i16(<32 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.smin.v64i16(<64 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.smin.v128i16(<128 x i16> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i16 @llvm.vector.reduce.smin.v1i16(<1 x i16> undef) @@ -278,25 +278,25 @@ define i32 @reduce_smin_i16(i32 %arg) { define i32 @reduce_smin_i32(i32 %arg) { ; CHECK-LABEL: 'reduce_smin_i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.smin.v2i32(<2 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i32 @llvm.vector.reduce.smin.v16i32(<16 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i32 @llvm.vector.reduce.smin.v32i32(<32 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V64 = call i32 @llvm.vector.reduce.smin.v64i32(<64 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: %V128 = call i32 @llvm.vector.reduce.smin.v128i32(<128 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.smin.v2i32(<2 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.smin.v16i32(<16 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.smin.v32i32(<32 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.smin.v64i32(<64 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.smin.v128i32(<128 x i32> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smin_i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.smin.v2i32(<2 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i32 @llvm.vector.reduce.smin.v16i32(<16 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i32 @llvm.vector.reduce.smin.v32i32(<32 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64 = call i32 @llvm.vector.reduce.smin.v64i32(<64 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = call i32 @llvm.vector.reduce.smin.v128i32(<128 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.smin.v2i32(<2 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.smin.v16i32(<16 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.smin.v32i32(<32 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.smin.v64i32(<64 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.smin.v128i32(<128 x i32> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> undef) @@ -312,25 +312,25 @@ define i32 @reduce_smin_i32(i32 %arg) { define i32 @reduce_smin_i64(i32 %arg) { ; CHECK-LABEL: 'reduce_smin_i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.smin.v1i64(<1 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.smin.v2i64(<2 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.vector.reduce.smin.v4i64(<4 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i64 @llvm.vector.reduce.smin.v8i64(<8 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i64 @llvm.vector.reduce.smin.v16i64(<16 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V32 = call i64 @llvm.vector.reduce.smin.v32i64(<32 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V64 = call i64 @llvm.vector.reduce.smin.v64i64(<64 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 62 for instruction: %V128 = call i64 @llvm.vector.reduce.smin.v128i64(<128 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.smin.v1i64(<1 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.smin.v2i64(<2 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.smin.v4i64(<4 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.smin.v8i64(<8 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.smin.v16i64(<16 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.smin.v32i64(<32 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.smin.v64i64(<64 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.smin.v128i64(<128 x i64> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_smin_i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i64 @llvm.vector.reduce.smin.v1i64(<1 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.smin.v2i64(<2 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.smin.v4i64(<4 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i64 @llvm.vector.reduce.smin.v8i64(<8 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i64 @llvm.vector.reduce.smin.v16i64(<16 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32 = call i64 @llvm.vector.reduce.smin.v32i64(<32 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = call i64 @llvm.vector.reduce.smin.v64i64(<64 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call i64 @llvm.vector.reduce.smin.v128i64(<128 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.smin.v1i64(<1 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.smin.v2i64(<2 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.smin.v4i64(<4 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.smin.v8i64(<8 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.smin.v16i64(<16 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.smin.v32i64(<32 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.smin.v64i64(<64 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.smin.v128i64(<128 x i64> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i64 @llvm.vector.reduce.smin.v1i64(<1 x i64> undef) diff --git a/llvm/test/Analysis/CostModel/RISCV/reduce-or.ll b/llvm/test/Analysis/CostModel/RISCV/reduce-or.ll index d75a95f3fadd9..b0e90253b2810 100644 --- a/llvm/test/Analysis/CostModel/RISCV/reduce-or.ll +++ b/llvm/test/Analysis/CostModel/RISCV/reduce-or.ll @@ -49,25 +49,25 @@ define i32 @reduce_i1(i32 %arg) { define i32 @reduce_i8(i32 %arg) { ; CHECK-LABEL: 'reduce_i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.or.v1i8(<1 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i8 @llvm.vector.reduce.or.v1i8(<1 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i8 @llvm.vector.reduce.or.v1i8(<1 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i8 @llvm.vector.reduce.or.v1i8(<1 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i8 @llvm.vector.reduce.or.v64i8(<64 x i8> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V128 = call i8 @llvm.vector.reduce.or.v128i8(<128 x i8> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i8 @llvm.vector.reduce.or.v1i8(<1 x i8> undef) @@ -83,25 +83,25 @@ define i32 @reduce_i8(i32 %arg) { define i32 @reduce_i16(i32 %arg) { ; CHECK-LABEL: 'reduce_i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.or.v1i16(<1 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %V128 = call i16 @llvm.vector.reduce.or.v128i16(<128 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i16 @llvm.vector.reduce.or.v1i16(<1 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V128 = call i16 @llvm.vector.reduce.or.v128i16(<128 x i16> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i16 @llvm.vector.reduce.or.v1i16(<1 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V128 = call i16 @llvm.vector.reduce.or.v128i16(<128 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i16 @llvm.vector.reduce.or.v1i16(<1 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i16 @llvm.vector.reduce.or.v32i16(<32 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call i16 @llvm.vector.reduce.or.v64i16(<64 x i16> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call i16 @llvm.vector.reduce.or.v128i16(<128 x i16> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i16 @llvm.vector.reduce.or.v1i16(<1 x i16> undef) @@ -117,25 +117,25 @@ define i32 @reduce_i16(i32 %arg) { define i32 @reduce_i32(i32 %arg) { ; CHECK-LABEL: 'reduce_i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %V64 = call i32 @llvm.vector.reduce.or.v64i32(<64 x i32> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 31 for instruction: %V128 = call i32 @llvm.vector.reduce.or.v128i32(<128 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V64 = call i32 @llvm.vector.reduce.or.v64i32(<64 x i32> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V128 = call i32 @llvm.vector.reduce.or.v128i32(<128 x i32> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V64 = call i32 @llvm.vector.reduce.or.v64i32(<64 x i32> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = call i32 @llvm.vector.reduce.or.v128i32(<128 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i32 @llvm.vector.reduce.or.v16i32(<16 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call i32 @llvm.vector.reduce.or.v32i32(<32 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call i32 @llvm.vector.reduce.or.v64i32(<64 x i32> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V128 = call i32 @llvm.vector.reduce.or.v128i32(<128 x i32> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> undef) @@ -151,25 +151,25 @@ define i32 @reduce_i32(i32 %arg) { define i32 @reduce_i64(i32 %arg) { ; CHECK-LABEL: 'reduce_i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %V32 = call i64 @llvm.vector.reduce.or.v32i64(<32 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 30 for instruction: %V64 = call i64 @llvm.vector.reduce.or.v64i64(<64 x i64> undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 62 for instruction: %V128 = call i64 @llvm.vector.reduce.or.v128i64(<128 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %V32 = call i64 @llvm.vector.reduce.or.v32i64(<32 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 29 for instruction: %V64 = call i64 @llvm.vector.reduce.or.v64i64(<64 x i64> undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 61 for instruction: %V128 = call i64 @llvm.vector.reduce.or.v128i64(<128 x i64> undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef ; ; SIZE-LABEL: 'reduce_i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V32 = call i64 @llvm.vector.reduce.or.v32i64(<32 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = call i64 @llvm.vector.reduce.or.v64i64(<64 x i64> undef) -; SIZE-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call i64 @llvm.vector.reduce.or.v128i64(<128 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call i64 @llvm.vector.reduce.or.v8i64(<8 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V32 = call i64 @llvm.vector.reduce.or.v32i64(<32 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V64 = call i64 @llvm.vector.reduce.or.v64i64(<64 x i64> undef) +; SIZE-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V128 = call i64 @llvm.vector.reduce.or.v128i64(<128 x i64> undef) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 undef ; %V1 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef) diff --git a/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-fp.ll b/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-fp.ll index 4f6e0ba074ed8..8ae387f48ccaa 100644 --- a/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-fp.ll +++ b/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-fp.ll @@ -452,11 +452,11 @@ declare half @llvm.vector.reduce.fmin.nxv1f16() define half @vreduce_fmin_nxv1f16( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv1f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv1f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv1f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv1f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmin.nxv1f16( %v) @@ -465,11 +465,11 @@ define half @vreduce_fmin_nxv1f16( %v) { define half @vreduce_fmin_nxv1f16_nonans( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f16_nonans' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan half @llvm.vector.reduce.fmin.nxv1f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan half @llvm.vector.reduce.fmin.nxv1f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f16_nonans' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan half @llvm.vector.reduce.fmin.nxv1f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan half @llvm.vector.reduce.fmin.nxv1f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call nnan half @llvm.vector.reduce.fmin.nxv1f16( %v) @@ -478,11 +478,11 @@ define half @vreduce_fmin_nxv1f16_nonans( %v) { define half @vreduce_fmin_nxv1f16_nonans_noinfs( %v) #1 { ; CHECK-LABEL: 'vreduce_fmin_nxv1f16_nonans_noinfs' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmin.nxv1f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmin.nxv1f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f16_nonans_noinfs' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmin.nxv1f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmin.nxv1f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call nnan ninf half @llvm.vector.reduce.fmin.nxv1f16( %v) @@ -493,11 +493,11 @@ declare half @llvm.vector.reduce.fmin.nxv2f16() define half @vreduce_fmin_nxv2f16( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv2f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv2f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv2f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv2f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv2f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv2f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmin.nxv2f16( %v) @@ -508,11 +508,11 @@ declare half @llvm.vector.reduce.fmin.nxv4f16() define half @vreduce_fmin_nxv4f16( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv4f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv4f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv4f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv4f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv4f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv4f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmin.nxv4f16( %v) @@ -523,11 +523,11 @@ declare half @llvm.vector.reduce.fmin.nxv64f16() define half @vreduce_fmin_nxv64f16( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv64f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv64f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv64f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv64f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv64f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmin.nxv64f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmin.nxv64f16( %v) @@ -538,11 +538,11 @@ declare float @llvm.vector.reduce.fmin.nxv1f32() define float @vreduce_fmin_nxv1f32( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv1f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv1f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv1f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv1f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmin.nxv1f32( %v) @@ -551,11 +551,11 @@ define float @vreduce_fmin_nxv1f32( %v) { define float @vreduce_fmin_nxv1f32_nonans( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f32_nonans' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan float @llvm.vector.reduce.fmin.nxv1f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan float @llvm.vector.reduce.fmin.nxv1f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f32_nonans' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan float @llvm.vector.reduce.fmin.nxv1f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan float @llvm.vector.reduce.fmin.nxv1f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call nnan float @llvm.vector.reduce.fmin.nxv1f32( %v) @@ -564,11 +564,11 @@ define float @vreduce_fmin_nxv1f32_nonans( %v) { define float @vreduce_fmin_nxv1f32_nonans_noinfs( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f32_nonans_noinfs' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmin.nxv1f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmin.nxv1f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f32_nonans_noinfs' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmin.nxv1f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmin.nxv1f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call nnan ninf float @llvm.vector.reduce.fmin.nxv1f32( %v) @@ -579,11 +579,11 @@ declare float @llvm.vector.reduce.fmin.nxv2f32() define float @vreduce_fmin_nxv2f32( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv2f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv2f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv2f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv2f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv2f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv2f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmin.nxv2f32( %v) @@ -594,11 +594,11 @@ declare float @llvm.vector.reduce.fmin.nxv4f32() define float @vreduce_fmin_nxv4f32( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv4f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv4f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv4f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv4f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv4f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv4f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmin.nxv4f32( %v) @@ -609,11 +609,11 @@ declare float @llvm.vector.reduce.fmin.nxv32f32() define float @vreduce_fmin_nxv32f32( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv32f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv32f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv32f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv32f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv32f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmin.nxv32f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmin.nxv32f32( %v) @@ -624,11 +624,11 @@ declare double @llvm.vector.reduce.fmin.nxv1f64() define double @vreduce_fmin_nxv1f64( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv1f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv1f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv1f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv1f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmin.nxv1f64( %v) @@ -637,11 +637,11 @@ define double @vreduce_fmin_nxv1f64( %v) { define double @vreduce_fmin_nxv1f64_nonans( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f64_nonans' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan double @llvm.vector.reduce.fmin.nxv1f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan double @llvm.vector.reduce.fmin.nxv1f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f64_nonans' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan double @llvm.vector.reduce.fmin.nxv1f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan double @llvm.vector.reduce.fmin.nxv1f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call nnan double @llvm.vector.reduce.fmin.nxv1f64( %v) @@ -650,11 +650,11 @@ define double @vreduce_fmin_nxv1f64_nonans( %v) { define double @vreduce_fmin_nxv1f64_nonans_noinfs( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv1f64_nonans_noinfs' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmin.nxv1f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmin.nxv1f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv1f64_nonans_noinfs' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmin.nxv1f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmin.nxv1f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call nnan ninf double @llvm.vector.reduce.fmin.nxv1f64( %v) @@ -665,11 +665,11 @@ declare double @llvm.vector.reduce.fmin.nxv2f64() define double @vreduce_fmin_nxv2f64( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv2f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv2f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv2f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv2f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv2f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv2f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmin.nxv2f64( %v) @@ -680,11 +680,11 @@ declare double @llvm.vector.reduce.fmin.nxv4f64() define double @vreduce_fmin_nxv4f64( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv4f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv4f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv4f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv4f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv4f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv4f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmin.nxv4f64( %v) @@ -695,11 +695,11 @@ declare double @llvm.vector.reduce.fmin.nxv16f64() define double @vreduce_fmin_nxv16f64( %v) { ; CHECK-LABEL: 'vreduce_fmin_nxv16f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv16f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv16f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmin_nxv16f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv16f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmin.nxv16f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmin.nxv16f64( %v) @@ -710,11 +710,11 @@ declare half @llvm.vector.reduce.fmax.nxv1f16() define half @vreduce_fmax_nxv1f16( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv1f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv1f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv1f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv1f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmax.nxv1f16( %v) @@ -723,11 +723,11 @@ define half @vreduce_fmax_nxv1f16( %v) { define half @vreduce_fmax_nxv1f16_nonans( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f16_nonans' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan half @llvm.vector.reduce.fmax.nxv1f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan half @llvm.vector.reduce.fmax.nxv1f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f16_nonans' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan half @llvm.vector.reduce.fmax.nxv1f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan half @llvm.vector.reduce.fmax.nxv1f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call nnan half @llvm.vector.reduce.fmax.nxv1f16( %v) @@ -736,11 +736,11 @@ define half @vreduce_fmax_nxv1f16_nonans( %v) { define half @vreduce_fmax_nxv1f16_nonans_noinfs( %v) #1 { ; CHECK-LABEL: 'vreduce_fmax_nxv1f16_nonans_noinfs' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmax.nxv1f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmax.nxv1f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f16_nonans_noinfs' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmax.nxv1f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf half @llvm.vector.reduce.fmax.nxv1f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call nnan ninf half @llvm.vector.reduce.fmax.nxv1f16( %v) @@ -751,11 +751,11 @@ declare half @llvm.vector.reduce.fmax.nxv2f16() define half @vreduce_fmax_nxv2f16( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv2f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv2f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv2f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv2f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv2f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv2f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmax.nxv2f16( %v) @@ -766,11 +766,11 @@ declare half @llvm.vector.reduce.fmax.nxv4f16() define half @vreduce_fmax_nxv4f16( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv4f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv4f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv4f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv4f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv4f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv4f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmax.nxv4f16( %v) @@ -781,11 +781,11 @@ declare half @llvm.vector.reduce.fmax.nxv64f16() define half @vreduce_fmax_nxv64f16( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv64f16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv64f16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv64f16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret half %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv64f16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv64f16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call half @llvm.vector.reduce.fmax.nxv64f16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret half %red ; %red = call half @llvm.vector.reduce.fmax.nxv64f16( %v) @@ -796,11 +796,11 @@ declare float @llvm.vector.reduce.fmax.nxv1f32() define float @vreduce_fmax_nxv1f32( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv1f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv1f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv1f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv1f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmax.nxv1f32( %v) @@ -809,11 +809,11 @@ define float @vreduce_fmax_nxv1f32( %v) { define float @vreduce_fmax_nxv1f32_nonans( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f32_nonans' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan float @llvm.vector.reduce.fmax.nxv1f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan float @llvm.vector.reduce.fmax.nxv1f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f32_nonans' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan float @llvm.vector.reduce.fmax.nxv1f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan float @llvm.vector.reduce.fmax.nxv1f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call nnan float @llvm.vector.reduce.fmax.nxv1f32( %v) @@ -822,11 +822,11 @@ define float @vreduce_fmax_nxv1f32_nonans( %v) { define float @vreduce_fmax_nxv1f32_nonans_noinfs( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f32_nonans_noinfs' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmax.nxv1f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmax.nxv1f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f32_nonans_noinfs' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmax.nxv1f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf float @llvm.vector.reduce.fmax.nxv1f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call nnan ninf float @llvm.vector.reduce.fmax.nxv1f32( %v) @@ -837,11 +837,11 @@ declare float @llvm.vector.reduce.fmax.nxv2f32() define float @vreduce_fmax_nxv2f32( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv2f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv2f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv2f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv2f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv2f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv2f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmax.nxv2f32( %v) @@ -852,11 +852,11 @@ declare float @llvm.vector.reduce.fmax.nxv4f32() define float @vreduce_fmax_nxv4f32( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv4f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv4f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv4f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv4f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv4f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv4f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmax.nxv4f32( %v) @@ -867,11 +867,11 @@ declare float @llvm.vector.reduce.fmax.nxv32f32() define float @vreduce_fmax_nxv32f32( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv32f32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 15 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv32f32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv32f32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv32f32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv32f32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call float @llvm.vector.reduce.fmax.nxv32f32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float %red ; %red = call float @llvm.vector.reduce.fmax.nxv32f32( %v) @@ -882,11 +882,11 @@ declare double @llvm.vector.reduce.fmax.nxv1f64() define double @vreduce_fmax_nxv1f64( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv1f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv1f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv1f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv1f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmax.nxv1f64( %v) @@ -895,11 +895,11 @@ define double @vreduce_fmax_nxv1f64( %v) { define double @vreduce_fmax_nxv1f64_nonans( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f64_nonans' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan double @llvm.vector.reduce.fmax.nxv1f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan double @llvm.vector.reduce.fmax.nxv1f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f64_nonans' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan double @llvm.vector.reduce.fmax.nxv1f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan double @llvm.vector.reduce.fmax.nxv1f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call nnan double @llvm.vector.reduce.fmax.nxv1f64( %v) @@ -908,11 +908,11 @@ define double @vreduce_fmax_nxv1f64_nonans( %v) { define double @vreduce_fmax_nxv1f64_nonans_noinfs( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv1f64_nonans_noinfs' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmax.nxv1f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmax.nxv1f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv1f64_nonans_noinfs' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmax.nxv1f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call nnan ninf double @llvm.vector.reduce.fmax.nxv1f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call nnan ninf double @llvm.vector.reduce.fmax.nxv1f64( %v) @@ -923,11 +923,11 @@ declare double @llvm.vector.reduce.fmax.nxv2f64() define double @vreduce_fmax_nxv2f64( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv2f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv2f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv2f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv2f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv2f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv2f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmax.nxv2f64( %v) @@ -938,11 +938,11 @@ declare double @llvm.vector.reduce.fmax.nxv4f64() define double @vreduce_fmax_nxv4f64( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv4f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv4f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv4f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv4f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv4f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv4f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmax.nxv4f64( %v) @@ -953,11 +953,11 @@ declare double @llvm.vector.reduce.fmax.nxv16f64() define double @vreduce_fmax_nxv16f64( %v) { ; CHECK-LABEL: 'vreduce_fmax_nxv16f64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 14 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv16f64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 13 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv16f64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double %red ; ; SIZE-LABEL: 'vreduce_fmax_nxv16f64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv16f64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call double @llvm.vector.reduce.fmax.nxv16f64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double %red ; %red = call double @llvm.vector.reduce.fmax.nxv16f64( %v) diff --git a/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-int.ll b/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-int.ll index 2807f7526760f..a1a22b56358a3 100644 --- a/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-int.ll +++ b/llvm/test/Analysis/CostModel/RISCV/reduce-scalable-int.ll @@ -23,11 +23,11 @@ declare i8 @llvm.vector.reduce.umax.nxv1i8() define signext i8 @vreduce_umax_nxv1i8( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv1i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv1i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv1i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv1i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv1i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv1i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.umax.nxv1i8( %v) @@ -38,11 +38,11 @@ declare i8 @llvm.vector.reduce.smax.nxv1i8() define signext i8 @vreduce_smax_nxv1i8( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv1i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv1i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv1i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv1i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv1i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv1i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.smax.nxv1i8( %v) @@ -53,11 +53,11 @@ declare i8 @llvm.vector.reduce.umin.nxv1i8() define signext i8 @vreduce_umin_nxv1i8( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv1i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv1i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv1i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv1i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv1i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv1i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.umin.nxv1i8( %v) @@ -68,11 +68,11 @@ declare i8 @llvm.vector.reduce.smin.nxv1i8() define signext i8 @vreduce_smin_nxv1i8( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv1i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv1i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv1i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv1i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv1i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv1i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.smin.nxv1i8( %v) @@ -83,11 +83,11 @@ declare i8 @llvm.vector.reduce.and.nxv1i8() define signext i8 @vreduce_and_nxv1i8( %v) { ; CHECK-LABEL: 'vreduce_and_nxv1i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv1i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv1i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_and_nxv1i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv1i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv1i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.and.nxv1i8( %v) @@ -98,11 +98,11 @@ declare i8 @llvm.vector.reduce.or.nxv1i8() define signext i8 @vreduce_or_nxv1i8( %v) { ; CHECK-LABEL: 'vreduce_or_nxv1i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv1i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv1i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_or_nxv1i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv1i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv1i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.or.nxv1i8( %v) @@ -143,11 +143,11 @@ declare i8 @llvm.vector.reduce.umax.nxv2i8() define signext i8 @vreduce_umax_nxv2i8( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv2i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv2i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv2i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv2i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv2i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv2i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.umax.nxv2i8( %v) @@ -158,11 +158,11 @@ declare i8 @llvm.vector.reduce.smax.nxv2i8() define signext i8 @vreduce_smax_nxv2i8( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv2i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv2i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv2i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv2i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv2i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv2i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.smax.nxv2i8( %v) @@ -173,11 +173,11 @@ declare i8 @llvm.vector.reduce.umin.nxv2i8() define signext i8 @vreduce_umin_nxv2i8( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv2i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv2i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv2i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv2i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv2i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv2i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.umin.nxv2i8( %v) @@ -188,11 +188,11 @@ declare i8 @llvm.vector.reduce.smin.nxv2i8() define signext i8 @vreduce_smin_nxv2i8( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv2i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv2i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv2i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv2i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv2i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv2i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.smin.nxv2i8( %v) @@ -203,11 +203,11 @@ declare i8 @llvm.vector.reduce.and.nxv2i8() define signext i8 @vreduce_and_nxv2i8( %v) { ; CHECK-LABEL: 'vreduce_and_nxv2i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv2i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv2i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_and_nxv2i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv2i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv2i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.and.nxv2i8( %v) @@ -218,11 +218,11 @@ declare i8 @llvm.vector.reduce.or.nxv2i8() define signext i8 @vreduce_or_nxv2i8( %v) { ; CHECK-LABEL: 'vreduce_or_nxv2i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv2i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv2i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_or_nxv2i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv2i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv2i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.or.nxv2i8( %v) @@ -263,11 +263,11 @@ declare i8 @llvm.vector.reduce.umax.nxv4i8() define signext i8 @vreduce_umax_nxv4i8( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv4i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv4i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv4i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv4i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv4i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umax.nxv4i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.umax.nxv4i8( %v) @@ -278,11 +278,11 @@ declare i8 @llvm.vector.reduce.smax.nxv4i8() define signext i8 @vreduce_smax_nxv4i8( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv4i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv4i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv4i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv4i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv4i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smax.nxv4i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.smax.nxv4i8( %v) @@ -293,11 +293,11 @@ declare i8 @llvm.vector.reduce.umin.nxv4i8() define signext i8 @vreduce_umin_nxv4i8( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv4i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv4i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv4i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv4i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv4i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.umin.nxv4i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.umin.nxv4i8( %v) @@ -308,11 +308,11 @@ declare i8 @llvm.vector.reduce.smin.nxv4i8() define signext i8 @vreduce_smin_nxv4i8( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv4i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv4i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv4i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv4i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv4i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.smin.nxv4i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.smin.nxv4i8( %v) @@ -323,11 +323,11 @@ declare i8 @llvm.vector.reduce.and.nxv4i8() define signext i8 @vreduce_and_nxv4i8( %v) { ; CHECK-LABEL: 'vreduce_and_nxv4i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv4i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv4i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_and_nxv4i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv4i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.and.nxv4i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.and.nxv4i8( %v) @@ -338,11 +338,11 @@ declare i8 @llvm.vector.reduce.or.nxv4i8() define signext i8 @vreduce_or_nxv4i8( %v) { ; CHECK-LABEL: 'vreduce_or_nxv4i8' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv4i8( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv4i8( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i8 %red ; ; SIZE-LABEL: 'vreduce_or_nxv4i8' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv4i8( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i8 @llvm.vector.reduce.or.nxv4i8( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i8 %red ; %red = call i8 @llvm.vector.reduce.or.nxv4i8( %v) @@ -415,11 +415,11 @@ declare i16 @llvm.vector.reduce.umax.nxv1i16() define signext i16 @vreduce_umax_nxv1i16( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv1i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv1i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv1i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv1i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv1i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv1i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.umax.nxv1i16( %v) @@ -430,11 +430,11 @@ declare i16 @llvm.vector.reduce.smax.nxv1i16() define signext i16 @vreduce_smax_nxv1i16( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv1i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv1i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv1i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv1i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv1i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv1i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.smax.nxv1i16( %v) @@ -445,11 +445,11 @@ declare i16 @llvm.vector.reduce.umin.nxv1i16() define signext i16 @vreduce_umin_nxv1i16( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv1i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv1i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv1i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv1i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv1i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv1i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.umin.nxv1i16( %v) @@ -460,11 +460,11 @@ declare i16 @llvm.vector.reduce.smin.nxv1i16() define signext i16 @vreduce_smin_nxv1i16( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv1i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv1i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv1i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv1i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv1i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv1i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.smin.nxv1i16( %v) @@ -475,11 +475,11 @@ declare i16 @llvm.vector.reduce.and.nxv1i16() define signext i16 @vreduce_and_nxv1i16( %v) { ; CHECK-LABEL: 'vreduce_and_nxv1i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv1i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv1i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_and_nxv1i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv1i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv1i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.and.nxv1i16( %v) @@ -490,11 +490,11 @@ declare i16 @llvm.vector.reduce.or.nxv1i16() define signext i16 @vreduce_or_nxv1i16( %v) { ; CHECK-LABEL: 'vreduce_or_nxv1i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv1i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv1i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_or_nxv1i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv1i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv1i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.or.nxv1i16( %v) @@ -567,11 +567,11 @@ declare i16 @llvm.vector.reduce.umax.nxv2i16() define signext i16 @vreduce_umax_nxv2i16( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv2i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv2i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv2i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv2i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv2i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv2i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.umax.nxv2i16( %v) @@ -582,11 +582,11 @@ declare i16 @llvm.vector.reduce.smax.nxv2i16() define signext i16 @vreduce_smax_nxv2i16( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv2i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv2i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv2i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv2i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv2i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv2i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.smax.nxv2i16( %v) @@ -597,11 +597,11 @@ declare i16 @llvm.vector.reduce.umin.nxv2i16() define signext i16 @vreduce_umin_nxv2i16( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv2i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv2i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv2i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv2i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv2i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv2i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.umin.nxv2i16( %v) @@ -612,11 +612,11 @@ declare i16 @llvm.vector.reduce.smin.nxv2i16() define signext i16 @vreduce_smin_nxv2i16( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv2i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv2i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv2i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv2i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv2i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv2i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.smin.nxv2i16( %v) @@ -627,11 +627,11 @@ declare i16 @llvm.vector.reduce.and.nxv2i16() define signext i16 @vreduce_and_nxv2i16( %v) { ; CHECK-LABEL: 'vreduce_and_nxv2i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv2i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv2i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_and_nxv2i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv2i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv2i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.and.nxv2i16( %v) @@ -642,11 +642,11 @@ declare i16 @llvm.vector.reduce.or.nxv2i16() define signext i16 @vreduce_or_nxv2i16( %v) { ; CHECK-LABEL: 'vreduce_or_nxv2i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv2i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv2i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_or_nxv2i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv2i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv2i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.or.nxv2i16( %v) @@ -719,11 +719,11 @@ declare i16 @llvm.vector.reduce.umax.nxv4i16() define signext i16 @vreduce_umax_nxv4i16( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv4i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv4i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv4i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv4i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv4i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umax.nxv4i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.umax.nxv4i16( %v) @@ -734,11 +734,11 @@ declare i16 @llvm.vector.reduce.smax.nxv4i16() define signext i16 @vreduce_smax_nxv4i16( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv4i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv4i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv4i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv4i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv4i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smax.nxv4i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.smax.nxv4i16( %v) @@ -749,11 +749,11 @@ declare i16 @llvm.vector.reduce.umin.nxv4i16() define signext i16 @vreduce_umin_nxv4i16( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv4i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv4i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv4i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv4i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv4i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.umin.nxv4i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.umin.nxv4i16( %v) @@ -764,11 +764,11 @@ declare i16 @llvm.vector.reduce.smin.nxv4i16() define signext i16 @vreduce_smin_nxv4i16( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv4i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv4i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv4i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv4i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv4i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.smin.nxv4i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.smin.nxv4i16( %v) @@ -779,11 +779,11 @@ declare i16 @llvm.vector.reduce.and.nxv4i16() define signext i16 @vreduce_and_nxv4i16( %v) { ; CHECK-LABEL: 'vreduce_and_nxv4i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv4i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv4i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_and_nxv4i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv4i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.and.nxv4i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.and.nxv4i16( %v) @@ -794,11 +794,11 @@ declare i16 @llvm.vector.reduce.or.nxv4i16() define signext i16 @vreduce_or_nxv4i16( %v) { ; CHECK-LABEL: 'vreduce_or_nxv4i16' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv4i16( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv4i16( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i16 %red ; ; SIZE-LABEL: 'vreduce_or_nxv4i16' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv4i16( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i16 @llvm.vector.reduce.or.nxv4i16( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i16 %red ; %red = call i16 @llvm.vector.reduce.or.nxv4i16( %v) @@ -871,11 +871,11 @@ declare i32 @llvm.vector.reduce.umax.nxv1i32() define signext i32 @vreduce_umax_nxv1i32( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv1i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv1i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv1i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv1i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv1i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv1i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.umax.nxv1i32( %v) @@ -886,11 +886,11 @@ declare i32 @llvm.vector.reduce.smax.nxv1i32() define signext i32 @vreduce_smax_nxv1i32( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv1i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv1i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv1i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv1i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv1i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv1i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.smax.nxv1i32( %v) @@ -901,11 +901,11 @@ declare i32 @llvm.vector.reduce.umin.nxv1i32() define signext i32 @vreduce_umin_nxv1i32( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv1i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv1i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv1i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv1i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv1i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv1i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.umin.nxv1i32( %v) @@ -916,11 +916,11 @@ declare i32 @llvm.vector.reduce.smin.nxv1i32() define signext i32 @vreduce_smin_nxv1i32( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv1i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv1i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv1i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv1i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv1i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv1i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.smin.nxv1i32( %v) @@ -931,11 +931,11 @@ declare i32 @llvm.vector.reduce.and.nxv1i32() define signext i32 @vreduce_and_nxv1i32( %v) { ; CHECK-LABEL: 'vreduce_and_nxv1i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv1i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv1i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_and_nxv1i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv1i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv1i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.and.nxv1i32( %v) @@ -946,11 +946,11 @@ declare i32 @llvm.vector.reduce.or.nxv1i32() define signext i32 @vreduce_or_nxv1i32( %v) { ; CHECK-LABEL: 'vreduce_or_nxv1i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv1i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv1i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_or_nxv1i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv1i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv1i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.or.nxv1i32( %v) @@ -1023,11 +1023,11 @@ declare i32 @llvm.vector.reduce.umax.nxv2i32() define signext i32 @vreduce_umax_nxv2i32( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv2i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv2i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv2i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv2i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv2i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv2i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.umax.nxv2i32( %v) @@ -1038,11 +1038,11 @@ declare i32 @llvm.vector.reduce.smax.nxv2i32() define signext i32 @vreduce_smax_nxv2i32( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv2i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv2i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv2i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv2i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv2i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv2i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.smax.nxv2i32( %v) @@ -1053,11 +1053,11 @@ declare i32 @llvm.vector.reduce.umin.nxv2i32() define signext i32 @vreduce_umin_nxv2i32( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv2i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv2i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv2i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv2i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv2i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv2i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.umin.nxv2i32( %v) @@ -1068,11 +1068,11 @@ declare i32 @llvm.vector.reduce.smin.nxv2i32() define signext i32 @vreduce_smin_nxv2i32( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv2i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv2i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv2i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv2i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv2i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv2i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.smin.nxv2i32( %v) @@ -1083,11 +1083,11 @@ declare i32 @llvm.vector.reduce.and.nxv2i32() define signext i32 @vreduce_and_nxv2i32( %v) { ; CHECK-LABEL: 'vreduce_and_nxv2i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv2i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv2i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_and_nxv2i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv2i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv2i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.and.nxv2i32( %v) @@ -1098,11 +1098,11 @@ declare i32 @llvm.vector.reduce.or.nxv2i32() define signext i32 @vreduce_or_nxv2i32( %v) { ; CHECK-LABEL: 'vreduce_or_nxv2i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv2i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv2i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_or_nxv2i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv2i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv2i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.or.nxv2i32( %v) @@ -1175,11 +1175,11 @@ declare i32 @llvm.vector.reduce.umax.nxv4i32() define signext i32 @vreduce_umax_nxv4i32( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv4i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv4i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv4i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv4i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv4i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umax.nxv4i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.umax.nxv4i32( %v) @@ -1190,11 +1190,11 @@ declare i32 @llvm.vector.reduce.smax.nxv4i32() define signext i32 @vreduce_smax_nxv4i32( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv4i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv4i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv4i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv4i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv4i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smax.nxv4i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.smax.nxv4i32( %v) @@ -1205,11 +1205,11 @@ declare i32 @llvm.vector.reduce.umin.nxv4i32() define signext i32 @vreduce_umin_nxv4i32( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv4i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv4i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv4i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv4i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv4i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.umin.nxv4i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.umin.nxv4i32( %v) @@ -1220,11 +1220,11 @@ declare i32 @llvm.vector.reduce.smin.nxv4i32() define signext i32 @vreduce_smin_nxv4i32( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv4i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv4i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv4i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv4i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv4i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.smin.nxv4i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.smin.nxv4i32( %v) @@ -1235,11 +1235,11 @@ declare i32 @llvm.vector.reduce.and.nxv4i32() define signext i32 @vreduce_and_nxv4i32( %v) { ; CHECK-LABEL: 'vreduce_and_nxv4i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv4i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv4i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_and_nxv4i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv4i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.and.nxv4i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.and.nxv4i32( %v) @@ -1250,11 +1250,11 @@ declare i32 @llvm.vector.reduce.or.nxv4i32() define signext i32 @vreduce_or_nxv4i32( %v) { ; CHECK-LABEL: 'vreduce_or_nxv4i32' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv4i32( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv4i32( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %red ; ; SIZE-LABEL: 'vreduce_or_nxv4i32' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv4i32( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i32 @llvm.vector.reduce.or.nxv4i32( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 %red ; %red = call i32 @llvm.vector.reduce.or.nxv4i32( %v) @@ -1327,11 +1327,11 @@ declare i64 @llvm.vector.reduce.umax.nxv1i64() define i64 @vreduce_umax_nxv1i64( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv1i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv1i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv1i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv1i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv1i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv1i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.umax.nxv1i64( %v) @@ -1342,11 +1342,11 @@ declare i64 @llvm.vector.reduce.smax.nxv1i64() define i64 @vreduce_smax_nxv1i64( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv1i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv1i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv1i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv1i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv1i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv1i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.smax.nxv1i64( %v) @@ -1357,11 +1357,11 @@ declare i64 @llvm.vector.reduce.umin.nxv1i64() define i64 @vreduce_umin_nxv1i64( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv1i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv1i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv1i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv1i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv1i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv1i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.umin.nxv1i64( %v) @@ -1372,11 +1372,11 @@ declare i64 @llvm.vector.reduce.smin.nxv1i64() define i64 @vreduce_smin_nxv1i64( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv1i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv1i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv1i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv1i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv1i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv1i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.smin.nxv1i64( %v) @@ -1387,11 +1387,11 @@ declare i64 @llvm.vector.reduce.and.nxv1i64() define i64 @vreduce_and_nxv1i64( %v) { ; CHECK-LABEL: 'vreduce_and_nxv1i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv1i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv1i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_and_nxv1i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv1i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv1i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.and.nxv1i64( %v) @@ -1402,11 +1402,11 @@ declare i64 @llvm.vector.reduce.or.nxv1i64() define i64 @vreduce_or_nxv1i64( %v) { ; CHECK-LABEL: 'vreduce_or_nxv1i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv1i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv1i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_or_nxv1i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv1i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv1i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.or.nxv1i64( %v) @@ -1479,11 +1479,11 @@ declare i64 @llvm.vector.reduce.umax.nxv2i64() define i64 @vreduce_umax_nxv2i64( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv2i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv2i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv2i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv2i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv2i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv2i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.umax.nxv2i64( %v) @@ -1494,11 +1494,11 @@ declare i64 @llvm.vector.reduce.smax.nxv2i64() define i64 @vreduce_smax_nxv2i64( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv2i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv2i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv2i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv2i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv2i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv2i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.smax.nxv2i64( %v) @@ -1509,11 +1509,11 @@ declare i64 @llvm.vector.reduce.umin.nxv2i64() define i64 @vreduce_umin_nxv2i64( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv2i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv2i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv2i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv2i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv2i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv2i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.umin.nxv2i64( %v) @@ -1524,11 +1524,11 @@ declare i64 @llvm.vector.reduce.smin.nxv2i64() define i64 @vreduce_smin_nxv2i64( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv2i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv2i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv2i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv2i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv2i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv2i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.smin.nxv2i64( %v) @@ -1539,11 +1539,11 @@ declare i64 @llvm.vector.reduce.and.nxv2i64() define i64 @vreduce_and_nxv2i64( %v) { ; CHECK-LABEL: 'vreduce_and_nxv2i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv2i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv2i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_and_nxv2i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv2i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv2i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.and.nxv2i64( %v) @@ -1554,11 +1554,11 @@ declare i64 @llvm.vector.reduce.or.nxv2i64() define i64 @vreduce_or_nxv2i64( %v) { ; CHECK-LABEL: 'vreduce_or_nxv2i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv2i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv2i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_or_nxv2i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv2i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv2i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.or.nxv2i64( %v) @@ -1631,11 +1631,11 @@ declare i64 @llvm.vector.reduce.umax.nxv4i64() define i64 @vreduce_umax_nxv4i64( %v) { ; CHECK-LABEL: 'vreduce_umax_nxv4i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv4i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv4i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_umax_nxv4i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv4i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umax.nxv4i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.umax.nxv4i64( %v) @@ -1646,11 +1646,11 @@ declare i64 @llvm.vector.reduce.smax.nxv4i64() define i64 @vreduce_smax_nxv4i64( %v) { ; CHECK-LABEL: 'vreduce_smax_nxv4i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv4i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv4i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_smax_nxv4i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv4i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smax.nxv4i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.smax.nxv4i64( %v) @@ -1661,11 +1661,11 @@ declare i64 @llvm.vector.reduce.umin.nxv4i64() define i64 @vreduce_umin_nxv4i64( %v) { ; CHECK-LABEL: 'vreduce_umin_nxv4i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv4i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv4i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_umin_nxv4i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv4i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.umin.nxv4i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.umin.nxv4i64( %v) @@ -1676,11 +1676,11 @@ declare i64 @llvm.vector.reduce.smin.nxv4i64() define i64 @vreduce_smin_nxv4i64( %v) { ; CHECK-LABEL: 'vreduce_smin_nxv4i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv4i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv4i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_smin_nxv4i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv4i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.smin.nxv4i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.smin.nxv4i64( %v) @@ -1691,11 +1691,11 @@ declare i64 @llvm.vector.reduce.and.nxv4i64() define i64 @vreduce_and_nxv4i64( %v) { ; CHECK-LABEL: 'vreduce_and_nxv4i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv4i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv4i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_and_nxv4i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv4i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.and.nxv4i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.and.nxv4i64( %v) @@ -1706,11 +1706,11 @@ declare i64 @llvm.vector.reduce.or.nxv4i64() define i64 @vreduce_or_nxv4i64( %v) { ; CHECK-LABEL: 'vreduce_or_nxv4i64' -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv4i64( %v) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv4i64( %v) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %red ; ; SIZE-LABEL: 'vreduce_or_nxv4i64' -; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv4i64( %v) +; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %red = call i64 @llvm.vector.reduce.or.nxv4i64( %v) ; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i64 %red ; %red = call i64 @llvm.vector.reduce.or.nxv4i64( %v) diff --git a/llvm/test/Analysis/CostModel/RISCV/vp-intrinsics.ll b/llvm/test/Analysis/CostModel/RISCV/vp-intrinsics.ll index c7cd845a0a03f..5126a6a0a3cbc 100644 --- a/llvm/test/Analysis/CostModel/RISCV/vp-intrinsics.ll +++ b/llvm/test/Analysis/CostModel/RISCV/vp-intrinsics.ll @@ -1822,35 +1822,35 @@ define void @reduce_fadd() { define void @reduce_other() { ; CHECK-LABEL: 'reduce_other' ; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %1 = call i32 @llvm.vp.reduce.xor.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call i32 @llvm.vp.reduce.and.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %3 = call i32 @llvm.vp.reduce.or.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %2 = call i32 @llvm.vp.reduce.and.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %3 = call i32 @llvm.vp.reduce.or.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 11 for instruction: %4 = call i32 @llvm.vp.reduce.mul.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %5 = call i32 @llvm.vp.reduce.smin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %6 = call i32 @llvm.vp.reduce.smax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %7 = call i32 @llvm.vp.reduce.umin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %8 = call i32 @llvm.vp.reduce.umax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %5 = call i32 @llvm.vp.reduce.smin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %6 = call i32 @llvm.vp.reduce.smax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %7 = call i32 @llvm.vp.reduce.umin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %8 = call i32 @llvm.vp.reduce.umax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call i32 @llvm.vp.reduce.mul.nxv4i32(i32 undef, undef, undef, i32 undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call float @llvm.vp.reduce.fmul.nxv4f32(float undef, undef, undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %11 = call float @llvm.vp.reduce.fmin.nxv4f32(float undef, undef, undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %11 = call float @llvm.vp.reduce.fmin.nxv4f32(float undef, undef, undef, i32 undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %12 = call float @llvm.vp.reduce.fminimum.nxv4f32(float undef, undef, undef, i32 undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %13 = call float @llvm.vp.reduce.fmax.nxv4f32(float undef, undef, undef, i32 undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %13 = call float @llvm.vp.reduce.fmax.nxv4f32(float undef, undef, undef, i32 undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %14 = call float @llvm.vp.reduce.fmaximum.nxv4f32(float undef, undef, undef, i32 undef) ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void ; ; TYPEBASED-LABEL: 'reduce_other' ; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %1 = call i32 @llvm.vp.reduce.xor.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call i32 @llvm.vp.reduce.and.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %3 = call i32 @llvm.vp.reduce.or.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %2 = call i32 @llvm.vp.reduce.and.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %3 = call i32 @llvm.vp.reduce.or.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) ; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 11 for instruction: %4 = call i32 @llvm.vp.reduce.mul.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %5 = call i32 @llvm.vp.reduce.smin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %6 = call i32 @llvm.vp.reduce.smax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %7 = call i32 @llvm.vp.reduce.umin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %8 = call i32 @llvm.vp.reduce.umax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %5 = call i32 @llvm.vp.reduce.smin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %6 = call i32 @llvm.vp.reduce.smax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %7 = call i32 @llvm.vp.reduce.umin.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %8 = call i32 @llvm.vp.reduce.umax.v4i32(i32 undef, <4 x i32> undef, <4 x i1> undef, i32 undef) ; TYPEBASED-NEXT: Cost Model: Invalid cost for instruction: %9 = call i32 @llvm.vp.reduce.mul.nxv4i32(i32 undef, undef, undef, i32 undef) ; TYPEBASED-NEXT: Cost Model: Invalid cost for instruction: %10 = call float @llvm.vp.reduce.fmul.nxv4f32(float undef, undef, undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %11 = call float @llvm.vp.reduce.fmin.nxv4f32(float undef, undef, undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %11 = call float @llvm.vp.reduce.fmin.nxv4f32(float undef, undef, undef, i32 undef) ; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %12 = call float @llvm.vp.reduce.fminimum.nxv4f32(float undef, undef, undef, i32 undef) -; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %13 = call float @llvm.vp.reduce.fmax.nxv4f32(float undef, undef, undef, i32 undef) +; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %13 = call float @llvm.vp.reduce.fmax.nxv4f32(float undef, undef, undef, i32 undef) ; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %14 = call float @llvm.vp.reduce.fmaximum.nxv4f32(float undef, undef, undef, i32 undef) ; TYPEBASED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void ; From 69b47845403e78f61987945033e1fd72e9dc044a Mon Sep 17 00:00:00 2001 From: Rin Dobrescu Date: Wed, 4 Dec 2024 09:30:44 +0000 Subject: [PATCH 004/593] [AArch64] Fix scheduling information for arithmetic and logical instructions. (#113542) This patch corrects scheduling information relating to Neoverse-V2 arithmetic and logical instructions. --- .../Target/AArch64/AArch64SchedNeoverseV1.td | 15 +- .../Target/AArch64/AArch64SchedNeoverseV2.td | 30 +- .../Neoverse/512tvb-sve-instructions.s | 33 +- .../AArch64/Neoverse/V1-basic-instructions.s | 2355 +++--- .../AArch64/Neoverse/V1-clear-upper-regs.s | 350 +- .../AArch64/Neoverse/V1-neon-instructions.s | 2465 +++--- .../AArch64/Neoverse/V1-sve-instructions.s | 4839 ++++++------ .../AArch64/Neoverse/V1-zero-dependency.s | 37 +- .../AArch64/Neoverse/V2-basic-instructions.s | 2575 ++++--- .../AArch64/Neoverse/V2-clear-upper-regs.s | 390 +- .../AArch64/Neoverse/V2-neon-instructions.s | 2491 +++--- .../AArch64/Neoverse/V2-sve-instructions.s | 6863 +++++++++-------- .../AArch64/Neoverse/V2-zero-lat-movs.s | 59 +- 13 files changed, 11299 insertions(+), 11203 deletions(-) diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td index 3fd9dd3f2fff9..368665467859f 100644 --- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td +++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td @@ -55,10 +55,10 @@ def V1UnitV0 : ProcResource<1>; // FP/ASIMD 0 def V1UnitV1 : ProcResource<1>; // FP/ASIMD 1 def V1UnitV2 : ProcResource<1>; // FP/ASIMD 2 def V1UnitV3 : ProcResource<1>; // FP/ASIMD 3 +def V1UnitFlg : ProcResource<3>; // Flags def V1UnitI : ProcResGroup<[V1UnitS, V1UnitM0, V1UnitM1]>; // Integer units -def V1UnitJ : ProcResGroup<[V1UnitS, V1UnitM0]>; // Integer 0-2 units def V1UnitM : ProcResGroup<[V1UnitM0, V1UnitM1]>; // Integer multicycle units def V1UnitL : ProcResGroup<[V1UnitL01, V1UnitL2]>; // Load units def V1UnitV : ProcResGroup<[V1UnitV0, V1UnitV1, @@ -98,13 +98,14 @@ def V1Write_0c_0Z : SchedWriteRes<[]>; def V1Write_1c_1B : SchedWriteRes<[V1UnitB]> { let Latency = 1; } def V1Write_1c_1I : SchedWriteRes<[V1UnitI]> { let Latency = 1; } -def V1Write_1c_1J : SchedWriteRes<[V1UnitJ]> { let Latency = 1; } +def V1Write_1c_1I_1Flg : SchedWriteRes<[V1UnitI, V1UnitFlg]> { let Latency = 1; } def V1Write_4c_1L : SchedWriteRes<[V1UnitL]> { let Latency = 4; } def V1Write_6c_1L : SchedWriteRes<[V1UnitL]> { let Latency = 6; } def V1Write_1c_1L01 : SchedWriteRes<[V1UnitL01]> { let Latency = 1; } def V1Write_4c_1L01 : SchedWriteRes<[V1UnitL01]> { let Latency = 4; } def V1Write_6c_1L01 : SchedWriteRes<[V1UnitL01]> { let Latency = 6; } def V1Write_2c_1M : SchedWriteRes<[V1UnitM]> { let Latency = 2; } +def V1Write_2c_1M_1Flg : SchedWriteRes<[V1UnitM, V1UnitFlg]> { let Latency = 2; } def V1Write_3c_1M : SchedWriteRes<[V1UnitM]> { let Latency = 3; } def V1Write_4c_1M : SchedWriteRes<[V1UnitM]> { let Latency = 4; } def V1Write_1c_1M0 : SchedWriteRes<[V1UnitM0]> { let Latency = 1; } @@ -595,7 +596,7 @@ def : InstRW<[V1Write_1c_1B], (instregex "^[CT]BN?Z[XW]$")>; def : SchedAlias; // ALU, basic, flagset -def : InstRW<[V1Write_1c_1J], +def : InstRW<[V1Write_1c_1I_1Flg], (instregex "^(ADD|SUB)S[WX]r[ir]$", "^(ADC|SBC)S[WX]r$", "^ANDS[WX]ri$", @@ -614,8 +615,8 @@ def : SchedAlias; // Arithmetic, flagset, LSL shift, shift <= 4 // Arithmetic, flagset, LSR/ASR/ROR shift or LSL shift > 4 def V1WriteISRegS : SchedWriteVariant< - [SchedVar, - SchedVar]>; + [SchedVar, + SchedVar]>; def : InstRW<[V1WriteISRegS], (instregex "^(ADD|SUB)S(([WX]r[sx])|Xrx64)$")>; @@ -623,10 +624,10 @@ def : InstRW<[V1WriteISRegS], def : InstRW<[V1Write_1c_1I], (instregex "^(AND|BIC|EON|EOR|ORN|ORR)[WX]rs$")>; // Logical, shift, flagset -def : InstRW<[V1Write_2c_1M], (instregex "^(AND|BIC)S[WX]rs$")>; +def : InstRW<[V1Write_2c_1M_1Flg], (instregex "^(AND|BIC)S[WX]rs$")>; // Flag manipulation instructions -def : InstRW<[V1Write_1c_1J], (instrs SETF8, SETF16, RMIF, CFINV)>; +def : InstRW<[V1Write_1c_1I_1Flg], (instrs SETF8, SETF16, RMIF, CFINV)>; // Divide and multiply instructions diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td index 2de5f59834d78..39f7077ae4514 100644 --- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td +++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td @@ -52,6 +52,7 @@ def V2UnitV3 : ProcResource<1>; // FP/ASIMD 3 def V2UnitL01 : ProcResource<2>; // Load/Store 0/1 def V2UnitL2 : ProcResource<1>; // Load 2 def V2UnitD : ProcResource<2>; // Store data 0/1 +def V2UnitFlg : ProcResource<3>; // Flags def V2UnitR : ProcResGroup<[V2UnitS0, V2UnitS1]>; // Integer single-cycle 0/1 def V2UnitS : ProcResGroup<[V2UnitS0, V2UnitS1, V2UnitS2, V2UnitS3]>; // Integer single-cycle 0/1/2/3 @@ -97,11 +98,13 @@ def V2Write_0c : SchedWriteRes<[]> { let Latency = 0; } def V2Write_1c_1B : SchedWriteRes<[V2UnitB]> { let Latency = 1; } def V2Write_1c_1F : SchedWriteRes<[V2UnitF]> { let Latency = 1; } +def V2Write_1c_1F_1Flg : SchedWriteRes<[V2UnitF, V2UnitFlg]> { let Latency = 1; } def V2Write_1c_1I : SchedWriteRes<[V2UnitI]> { let Latency = 1; } def V2Write_1c_1M : SchedWriteRes<[V2UnitM]> { let Latency = 1; } def V2Write_1c_1M0 : SchedWriteRes<[V2UnitM0]> { let Latency = 1; } def V2Write_1c_1L01 : SchedWriteRes<[V2UnitL01]> { let Latency = 1; } def V2Write_2c_1M : SchedWriteRes<[V2UnitM]> { let Latency = 2; } +def V2Write_2c_1M_1Flg : SchedWriteRes<[V2UnitM, V2UnitFlg]> { let Latency = 2; } def V2Write_3c_1M : SchedWriteRes<[V2UnitM]> { let Latency = 3; } def V2Write_2c_1M0 : SchedWriteRes<[V2UnitM0]> { let Latency = 2; } def V2Write_3c_1M0 : SchedWriteRes<[V2UnitM0]> { let Latency = 3; } @@ -886,12 +889,12 @@ def V2Write_ArithI : SchedWriteVariant<[ SchedVar]>; def V2Write_ArithF : SchedWriteVariant<[ - SchedVar, - SchedVar]>; + SchedVar, + SchedVar]>; def V2Write_Logical : SchedWriteVariant<[ - SchedVar, - SchedVar]>; + SchedVar, + SchedVar]>; def V2Write_Extr : SchedWriteVariant<[ SchedVar, @@ -1106,19 +1109,19 @@ def : InstRW<[V2Write_1c_1B_1R], (instrs BL, BLR)>; // ----------------------------------------------------------------------------- // ALU, basic -// ALU, basic, flagset def : SchedAlias; -def : InstRW<[V2Write_1c_1F], (instregex "^(ADD|SUB)S[WX]r[ir]$", + +// ALU, basic, flagset +def : InstRW<[V2Write_1c_1F_1Flg], + (instregex "^(ADD|SUB)S[WX]r[ir]$", "^(ADC|SBC)S[WX]r$", - "^ANDS[WX]ri$")>; + "^ANDS[WX]ri$", + "^(AND|BIC)S[WX]rr$")>; def : InstRW<[V2Write_0or1c_1I], (instregex "^MOVZ[WX]i$")>; // ALU, extend and shift def : SchedAlias; -// Conditional compare -def : InstRW<[V2Write_1c_1F], (instregex "^CCM[NP][WX][ir]")>; - // Arithmetic, LSL shift, shift <= 4 // Arithmetic, flagset, LSL shift, shift <= 4 // Arithmetic, LSR/ASR/ROR shift or LSL shift > 4 @@ -1129,6 +1132,9 @@ def : InstRW<[V2Write_ArithF], // Arithmetic, immediate to logical address tag def : InstRW<[V2Write_2c_1M], (instrs ADDG, SUBG)>; +// Conditional compare +def : InstRW<[V2Write_1c_1F_1Flg], (instregex "^CCM[NP][WX][ir]")>; + // Convert floating-point condition flags // Flag manipulation instructions def : WriteRes { let Latency = 1; } @@ -1138,8 +1144,10 @@ def : InstRW<[V2Write_2c_1M], (instrs IRG, IRGstack)>; // Insert Tag Mask // Subtract Pointer +def : InstRW<[V2Write_1c_1I], (instrs GMI, SUBP)>; + // Subtract Pointer, flagset -def : InstRW<[V2Write_1c_1I], (instrs GMI, SUBP, SUBPS)>; +def : InstRW<[V2Write_1c_1F_1Flg], (instrs SUBPS)>; // Logical, shift, no flagset def : InstRW<[V2Write_1c_1I], (instregex "^(AND|BIC|EON|EOR|ORN)[WX]rs$")>; diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/512tvb-sve-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/512tvb-sve-instructions.s index 8c6855096a904..e6d4d67cca780 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/512tvb-sve-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/512tvb-sve-instructions.s @@ -21,22 +21,25 @@ abs z0.b, p0/m, z0.b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - +# 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: - - - - - - - - - - - - - - 0.50 0.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z0.b, p0/m, z0.b +# 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 - - abs z0.b, p0/m, z0.b diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s index 52839faeee9db..a5330b9d6d2d6 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s @@ -2545,1183 +2545,1186 @@ drps # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: 11.00 11.00 33.00 33.00 96.33 162.33 162.33 312.75 186.75 145.25 145.25 167.50 44.50 51.50 9.50 +# 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: 11.00 11.00 33.00 33.00 45.33 45.33 45.33 96.33 162.33 162.33 306.50 205.50 139.00 139.00 167.50 44.50 51.50 9.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w2, w3, #4095 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w30, w29, #1, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w13, w5, #4095, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x5, x7, #1638 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w20, wsp, #801 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add wsp, wsp, #1104 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add wsp, w30, #4084 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x0, x24, #291 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x3, x24, #4095, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x8, sp, #1074 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add sp, x29, #3816 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w0, wsp, #4077 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w4, w20, #546, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub sp, sp, #288 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub wsp, w19, #16 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w13, w23, #291, lsl #12 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn w2, #4095 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w20, wsp, #0 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn x3, #1, lsl #12 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp sp, #20, lsl #12 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp x30, #4095 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs x4, sp, #3822 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn w3, #291, lsl #12 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn wsp, #1365 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn sp, #1092, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov sp, x30 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov wsp, w20 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x11, sp -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w24, wsp -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add wzr, w3, w5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w20, wzr, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w9, w3, wzr, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add xzr, x3, x5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x20, xzr, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x17, x29, x20, lsl #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - add x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn w3, w5 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w20, wzr, w4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds w9, w3, wzr, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn x3, x5 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds x20, xzr, x4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adds x17, x29, x20, lsl #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - adds x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub wzr, w3, w5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w9, w3, wzr, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub xzr, x3, x5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x17, x29, x20, lsl #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - sub x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp w3, w5 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs w9, w3, wzr, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp x3, x5 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - subs x17, x29, x20, lsl #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - subs x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn wzr, w4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn w5, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn w6, w7 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn w8, w9, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w10, w11, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w12, w13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w14, w15, lsr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w16, w17, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w18, w19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w20, w21, asr #22 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn w22, w23, asr #31 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn x0, x3 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn xzr, x4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn x5, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn x6, x7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x8, x9, lsl #15 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmn x10, x11, lsl #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x12, x13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x14, x15, lsr #41 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x16, x17, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x18, x19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x20, x21, asr #55 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmn x22, x23, asr #63 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp w0, w3 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp wzr, w4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp w5, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp w6, w7 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp w8, w9, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp w10, w11, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp w12, w13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp w14, w15, lsr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp w18, w19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp w20, w21, asr #22 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp w22, w23, asr #31 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp x0, x3 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp xzr, x4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp x5, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp x6, x7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x8, x9, lsl #15 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp x10, x11, lsl #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x12, x13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x14, x15, lsr #41 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x16, x17, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x18, x19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x20, x21, asr #55 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - cmp x22, x23, asr #63 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp wzr, w0 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - cmp xzr, x0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc w9, wzr, w10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc x9, xzr, x10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs w9, wzr, w10 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs x9, xzr, x10 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - adcs x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc w9, w10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc x9, x10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - sbcs w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - sbcs wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs w9, w10 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - sbcs w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - sbcs x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - sbcs xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs x9, x10 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - sbcs x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc w3, w12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc wzr, w9 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc w23, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc x29, x30 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc xzr, x0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc x0, xzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs w3, w12 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs wzr, w9 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs w23, wzr -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs x29, x30 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs xzr, x0 -# CHECK-NEXT: - - - - - - - 0.33 - 0.33 0.33 - - - - ngcs x0, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx x1, x2, #3, #2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x3, x4, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr wzr, wzr, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx w12, w9, #0, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfiz x4, x5, #52, #11 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx xzr, x4, #0, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfiz x4, xzr, #1, #6 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x5, x6, #12 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfi x4, x5, #52, #11 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil xzr, x4, #0, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfc x4, #1, #6 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil x5, x6, #12, #52 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxtb w1, w2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxtb xzr, w3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxth w9, w10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxth x0, w1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxtw x3, w30 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - uxtb w1, w2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - uxth w9, w10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx x3, x30, #0, #32 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w3, w2, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w9, w10, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x20, x21, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w1, wzr, #3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w3, w2, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w9, w10, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x20, x21, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr wzr, wzr, #3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w3, w2, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w9, w10, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x20, x21, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w1, wzr, #3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz x2, x3, #63, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz x9, x10, #5, #59 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz w11, w12, #31, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz w13, w14, #29, #3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x2, x3, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x9, x10, #5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w11, w12, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w13, w14, #29 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfi x2, x3, #63, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil x19, x20, #0, #64 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfi x9, x10, #5, #59 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfi w11, w12, #31, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfi w13, w14, #29, #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfc xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil x2, x3, #63, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil x19, x20, #0, #64 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil x9, x10, #5, #59 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil w11, w12, #31, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil w13, w14, #29, #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bfxil xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x2, x3, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x9, x10, #5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w11, w12, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w13, w14, #29 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfiz xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x2, x3, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x9, x10, #5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w11, w12, #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w13, w14, #29 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx xzr, xzr, #10, #11 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - cbz w5, #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - cbz x5, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - cbnz x2, #-4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - cbnz x26, #1048572 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - cbz wzr, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - cbnz xzr, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - b.ne #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - b.ge #1048572 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - b.ge #-4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w1, #31, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w3, #0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp wzr, #15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x9, #31, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x3, #0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp xzr, #5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w1, #31, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w3, #0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn wzr, #15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x9, #31, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x3, #0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn xzr, #5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w1, wzr, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w3, w0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp wzr, w15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x9, xzr, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x3, x0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp xzr, x5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w1, wzr, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w3, w0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn wzr, w15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x9, xzr, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x3, x0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn xzr, x5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset w3, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset x9, pl -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm w20, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm x30, ge -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w2, wzr, wzr, al -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x3, xzr, xzr, nv -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc w3, w5, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc wzr, w4, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset w9, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc x3, x5, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc xzr, x4, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset x9, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w5, w6, w6, nv -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x1, x2, x2, al -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv w3, w5, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv wzr, w4, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm w9, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv x3, x5, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv xzr, x4, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm x9, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x1, x0, x0, al -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w9, w8, w8, nv -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg w3, w5, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg wzr, w4, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg w9, wzr, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg x3, x5, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg xzr, x4, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg x9, xzr, lt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x4, x8, x8, al -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w9, w8, w8, nv -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rbit w0, w7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rbit x18, x3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev16 w17, w1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev16 x5, x2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev w18, w0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev32 x20, x1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev x22, x2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - clz w24, w3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - clz x26, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cls w3, w5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - cls x20, x5 -# CHECK-NEXT: - - - - - - - 5.00 - - - - - - - udiv w0, w7, w10 -# CHECK-NEXT: - - - - - - - 5.00 - - - - - - - udiv x9, x22, x4 -# CHECK-NEXT: - - - - - - - 5.00 - - - - - - - sdiv w12, w21, w0 -# CHECK-NEXT: - - - - - - - 5.00 - - - - - - - sdiv x13, x2, x1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w11, w12, w13 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x14, x15, x16 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w17, w18, w19 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x20, x21, x22 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w23, w24, w25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x26, x27, x28 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w0, w1, w2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x3, x4, x5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w6, w7, w8 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x9, x10, x11 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w12, w13, w14 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x15, x16, x17 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w18, w19, w20 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x21, x22, x23 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w24, w25, w26 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x27, x28, x29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smulh x30, x29, x28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smulh xzr, x27, x26 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umulh x30, x29, x28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umulh x23, x30, xzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd w1, w3, w7, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd wzr, w0, w9, w11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd w13, wzr, w4, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd w19, w30, wzr, w29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - mul w4, w5, w6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd x1, x3, x7, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd xzr, x0, x9, x11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd x13, xzr, x4, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - madd x19, x30, xzr, x29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - mul x4, x5, x6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub w1, w3, w7, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub wzr, w0, w9, w11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub w13, wzr, w4, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub w19, w30, wzr, w29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - mneg w4, w5, w6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub x1, x3, x7, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub xzr, x0, x9, x11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub x13, xzr, x4, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - msub x19, x30, xzr, x29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - mneg x4, x5, x6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smaddl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smaddl xzr, w10, w11, x12 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smaddl x13, wzr, w14, x15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smaddl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smull x19, w20, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smsubl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smsubl xzr, w10, w11, x12 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smsubl x13, wzr, w14, x15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - smsubl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smnegl x19, w20, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - umaddl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - umaddl xzr, w10, w11, x12 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - umaddl x13, wzr, w14, x15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - umaddl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umull x19, w20, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - umsubl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - umsubl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umnegl x19, w20, w21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smulh x30, x29, x28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smulh x23, x22, xzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umulh x23, x22, xzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - mul x19, x20, xzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - mneg w21, w22, w23 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smull x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umull x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - smnegl x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - umnegl x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr w3, w5, w7, #0 -# CHECK-NEXT: - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr w11, w13, w17, #31 -# CHECK-NEXT: - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr x3, x5, x7, #15 -# CHECK-NEXT: - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr x11, x13, x17, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x19, x23, #24 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x29, xzr, #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w9, w13, #31 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmp s3, s5 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmpe s29, s30 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmp d4, d12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmpe d26, d22 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmp s1, s31, #0, eq -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmp s3, s0, #15, hs -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmp s31, s15, #13, hs -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmp d9, d31, #0, le -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmp d3, d0, #15, gt -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmp d31, d5, #7, ne -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmpe s1, s31, #0, eq -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmpe s3, s0, #15, hs -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmpe s31, s15, #13, hs -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmpe d9, d31, #0, le -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmpe d3, d0, #15, gt -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fccmpe d31, d5, #7, ne -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcsel s3, s20, s9, pl -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcsel d9, d10, d11, mi -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s0, s1 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs s2, s3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg s4, s5 -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fsqrt s6, s7 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvt d8, s9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, s11 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintn s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintp s14, s15 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintm s16, s17 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintz s18, s19 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frinta s20, s21 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintx s22, s23 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frinti s24, s25 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d0, d1 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs d2, d3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg d4, d5 -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fsqrt d6, d7 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvt s8, d9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, d11 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintn d12, d13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintp d14, d15 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintm d16, d17 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintz d18, d19 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frinta d20, d21 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintx d22, d23 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frinti d24, d25 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvt s26, h27 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvt d28, h29 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s20, s19, s17 -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fdiv s1, s2, s3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd s4, s5, s6 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub s7, s8, s9 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax s10, s11, s12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin s13, s14, s15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm s16, s17, s18 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm s19, s20, s21 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul s22, s23, s2 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul d20, d19, d17 -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fdiv d1, d2, d3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d4, d5, d6 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub d7, d8, d9 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax d10, d11, d12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin d13, d14, d15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm d16, d17, d18 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm d19, d20, d21 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul d22, d23, d24 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, h20, #13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, h0, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, h30, #45 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, h0, #64 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, s20, #13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, s0, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, s30, #45 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, s0, #64 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, d20, #13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, d0, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, d30, #45 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, d0, #64 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, h20, #13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, h0, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, h30, #45 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, h0, #64 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, s20, #13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, s0, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, s30, #45 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, s0, #64 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, d20, #13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, d0, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, d30, #45 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, d0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d14, x0, #64 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtns w3, h31 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtns xzr, h12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtnu wzr, h12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtnu x0, h0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtps wzr, h9 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtps x12, h20 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtpu w30, h23 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtpu x29, h3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtms w2, h3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtms x4, h5 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtmu w6, h7 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtmu x8, h9 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs w10, h11 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs x12, h13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu w14, h15 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu x15, h16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h17, w18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h19, x20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf h21, w22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf h23, x24 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtas w25, h26 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtas x27, h28 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtau w29, h30 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtau xzr, h0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtns w3, s31 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtns xzr, s12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtnu wzr, s12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtnu x0, s0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtps wzr, s9 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtps x12, s20 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtpu w30, s23 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtpu x29, s3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtms w2, s3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtms x4, s5 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtmu w6, s7 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtmu x8, s9 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs w10, s11 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs x12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu w14, s15 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu x15, s16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s17, w18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s19, x20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf s21, w22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf s23, x24 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtas w25, s26 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtas x27, s28 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtau w29, s30 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtau xzr, s0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtns w3, d31 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtns xzr, d12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtnu wzr, d12 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtnu x0, d0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtps wzr, d9 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtps x12, d20 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtpu w30, d23 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtpu x29, d3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtms w2, d3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtms x4, d5 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtmu w6, d7 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtmu x8, d9 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs w10, d11 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs x12, d13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu w14, d15 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu x15, d16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d17, w18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - scvtf d19, x20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d21, w22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ucvtf d23, x24 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtas w25, d26 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtas x27, d28 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtau w29, d30 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtau xzr, d0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - fmov w3, s9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - fmov s9, w3 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - fmov x20, d31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - fmov d1, x15 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - fmov x3, v12.d[1] -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 fmov v1.d[1], x19 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s2, #0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s3, #1.00000000 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d30, #16.00000000 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s4, #1.06250000 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d10, #1.93750000 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s12, #-1.00000000 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d16, #8.50000000 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w3, #0 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x29, #4 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw xzr, #-4 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr s0, #8 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr d0, #1048572 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr q0, #-1048576 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - prfm pldl1strm, #0 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - prfm #22, #0 -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stxrb w18, w8, [sp] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stxrh w24, w15, [x16] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stxr w5, w6, [x17] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stxr w1, x10, [x21] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldxrb w30, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldxrh w17, [x4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldxr w22, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldxr x11, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldxr x11, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldxr x11, [x29] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stxp w12, w11, w10, [sp] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stxp wzr, x27, x9, [x12] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldxp w0, wzr, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldxp x17, x0, [x18] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldxp x17, x0, [x18] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stlxrb w12, w22, [x0] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stlxrh w10, w1, [x1] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stlxr w9, w2, [x2] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stlxr w9, x3, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldaxrb w8, [x4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldaxrh w7, [x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr w6, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr x5, [x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr x5, [x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr x5, [x6] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stlxp w4, w5, w6, [sp] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - stlxp wzr, x6, x7, [x1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldaxp w5, w18, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldaxp x6, x19, [x22] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldaxp x6, x19, [x22] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stlrb w24, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stlrh w25, [x30] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stlr w26, [x29] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stlr x27, [x28] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stlr x27, [x28] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stlr x27, [x28] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldarb w23, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldarh w22, [x30] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldar wzr, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldar x21, [x28] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldar x21, [x28] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldar x21, [x28] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - sturb w9, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - sturh wzr, [x12, #255] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stur w16, [x0, #-256] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stur x28, [x14, #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldurb w1, [x20, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldurh w20, [x1, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur w12, [sp, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur xzr, [x12, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldursb x9, [x7, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldursh x17, [x19, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldursw x20, [x15, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - prfum pldl2keep, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldursb w19, [x1, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldursh w15, [x21, #-256] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur b0, [sp, #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur h12, [x12, #-1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur s15, [x0, #255] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur d31, [x5, #25] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur q9, [x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur b3, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur h5, [x4, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur s7, [x12, #-1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur d11, [x19, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldur q13, [x1, #2] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w9, [x2], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3], #-256 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w10, [x3], #-256 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w19, [sp], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w20, [x30], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w21, [x12], #-256 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str xzr, [x9], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x2, [x3], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w9, [x2], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w10, [x3], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w19, [sp], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w20, [x30], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w21, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb wzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh wzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w19, [x12], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b0, [x0], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b3, [x3], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b5, [sp], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h10, [x10], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h13, [x23], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h15, [sp], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s20, [x20], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s23, [x23], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s25, [x0], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d20, [x20], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d23, [x23], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d25, [x0], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b0, [x0], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b3, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b5, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h10, [x10], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h13, [x23], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h15, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s20, [x20], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s23, [x23], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s25, [x0], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d20, [x20], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d23, [x23], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d25, [x0], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q20, [x1], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q23, [x9], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q25, [x20], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q10, [x1], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q22, [sp], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q21, [x20], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x3, [x4, #0]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w9, [x2, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w10, [x3, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w19, [sp, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w20, [x30, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w21, [x12, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str xzr, [x9, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x2, [x3, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w9, [x2, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w10, [x3, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w19, [sp, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w20, [x30, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w21, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb wzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh wzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w19, [x12, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b0, [x0, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b3, [x3, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b5, [sp, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h10, [x10, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h13, [x23, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h15, [sp, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s20, [x20, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s23, [x23, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s25, [x0, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d20, [x20, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d23, [x23, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d25, [x0, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b0, [x0, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b3, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b5, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h10, [x10, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h13, [x23, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h15, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s20, [x20, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s23, [x23, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s25, [x0, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d20, [x20, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d23, [x23, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d25, [x0, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q20, [x1, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q23, [x9, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q25, [x20, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q10, [x1, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q22, [sp, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q21, [x20, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - sttrb w9, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - sttrh wzr, [x12, #255] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - sttr w16, [x0, #-256] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - sttr x28, [x14, #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrb w1, [x20, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrh w20, [x1, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtr w12, [sp, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtr xzr, [x12, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsb x9, [x7, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsh x17, [x19, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsw x20, [x15, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsb w19, [x1, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsh w15, [x21, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x4, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x30, [x12, #32760] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x20, [sp, #8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr xzr, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w2, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w17, [sp, #16380] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w13, [x2, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x2, [x5, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x23, [sp, #16380] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w2, [x4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w23, [x6, #8190] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh wzr, [sp, #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh x29, [x2, #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w26, [x3, #121] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w12, [x2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb w27, [sp, #4095] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb xzr, [x15] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - str x30, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - str w20, [x4, #16380] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - strh w17, [sp, #8190] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - strb w23, [x3, #4095] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - strb wzr, [x2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr b31, [sp, #4095] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr h20, [x2, #8190] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr s10, [x19, #16380] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr d3, [x10, #32760] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q12, [sp, #65520] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb w10, [x30, x7] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w11, [x29, x3, sxtx] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - strb w12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb x18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w10, [x30, x7, lsl #1] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - strh w11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh x13, [x27, x5, sxtx #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w16, [x24, w8, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w18, [x22, w10, sxtw] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - strh w19, [x21, wzr, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr s9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w10, [x30, x7, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s12, [x28, xzr, sxtx] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - str w13, [x27, x5, sxtx #2] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - str w14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w16, [x24, w8, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr w18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x19, [x21, wzr, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x3, [sp, x5] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - str x9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr d10, [x30, x7, lsl #3] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - str x11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x13, [x27, x5, sxtx #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - prfm pldl1keep, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x16, [x24, w8, uxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldr x18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d19, [x21, wzr, sxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q10, [x30, x7, lsl #4] -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q13, [x27, x5, sxtx #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q16, [x24, w8, uxtw #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q19, [x21, wzr, sxtw #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldp w3, w5, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stp wzr, w9, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldp w2, wzr, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldp w9, w10, [sp, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [sp, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [x2, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x20, x30, [sp, #252] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldp x21, x29, [x2, #504] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldp x22, x23, [x3, #-512] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldp x24, x25, [x4, #8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldp s29, s28, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp s27, s26, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldp s1, s2, [x3, #44] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp d3, d5, [x9, #504] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp d7, d11, [x10, #-512] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldp d2, d3, [x30, #-8] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp q3, q5, [sp] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp q17, q19, [sp, #1008] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldp q23, q29, [x1, #-1024] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w3, w5, [sp], #0 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - stp wzr, w9, [sp], #252 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w2, wzr, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w9, w10, [sp], #4 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [sp], #4 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [x2], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x20, x30, [sp], #252 -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2], #504 -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3], #-512 -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4], #8 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s29, s28, [sp], #252 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp s27, s26, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s1, s2, [x3], #44 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d3, d5, [x9], #504 -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d7, d11, [x10], #-512 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp d2, d3, [x30], #-8 -# CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q3, q5, [sp], #0 -# CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q17, q19, [sp], #1008 -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp q23, q29, [x1], #-1024 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w3, w5, [sp, #0]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - stp wzr, w9, [sp, #252]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w2, wzr, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w9, w10, [sp, #4]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [sp, #4]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [x2, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x20, x30, [sp, #252]! -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2, #504]! -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3, #-512]! -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4, #8]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s29, s28, [sp, #252]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp s27, s26, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s1, s2, [x3, #44]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d3, d5, [x9, #504]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d7, d11, [x10, #-512]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp d2, d3, [x30, #-8]! -# CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q3, q5, [sp, #0]! -# CHECK-NEXT: - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q17, q19, [sp, #1008]! -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp q23, q29, [x1, #-1024]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w3, w5, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - stnp wzr, w9, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w2, wzr, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w9, w10, [sp, #4] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x21, x29, [x2, #504] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x22, x23, [x3, #-512] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x24, x25, [x4, #8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldnp s29, s28, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp s27, s26, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldnp s1, s2, [x3, #44] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp d3, d5, [x9, #504] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp d7, d11, [x10, #-512] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - ldnp d2, d3, [x30, #-8] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp q3, q5, [sp] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp q17, q19, [sp, #1008] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - ldnp q23, q29, [x1, #-1024] -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w3, #983055 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x10, #-6148914691236517206 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w12, w23, w21 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w16, w15, w1, lsl #1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w9, w4, w10, lsl #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, w30, w11 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and x3, x5, x7, lsl #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and x5, x14, x19, asr #4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, w17, w19, ror #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w0, w2, wzr, lsr #17 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, w30, w11, asr #2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and xzr, x4, x26 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, wzr, w20, ror #2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - and x7, x20, xzr, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - bic x13, x20, x14, lsl #47 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - bic w2, w7, w9 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - orr w2, w7, w0, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - orr x8, x9, x10, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - orn x3, x5, x7, asr #2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - orn w2, w5, w29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - ands w7, wzr, w9, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - ands x3, x5, x20, ror #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bics w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - bics x3, xzr, x3, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - tst w3, w7, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - tst x2, x20, asr #2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x3, x6 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x3, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov wzr, w2 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w3, w5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz w2, #0, lsl #16 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w2, #-1235 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x2, #5299989643264 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x2, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk w3, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz x4, #0, lsl #16 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk w5, #0, lsl #16 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz x6, #0, lsl #32 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk x7, #0, lsl #32 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz x8, #0, lsl #48 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk x9, #0, lsl #48 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adr x2, #1600 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adrp x21, #6553600 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - adr x0, #262144 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - tbz x12, #62, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - tbz x12, #62, #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - tbz x12, #62, #-32768 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - tbnz x12, #60, #32764 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - b #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - b #-4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - b #134217724 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - br x20 -# CHECK-NEXT: 0.50 0.50 - - - - - - - 0.50 0.50 - - - - blr xzr -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - ret x10 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - ret -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - eret -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - drps +# 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 - - - - add w2, w3, #4095 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w30, w29, #1, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w13, w5, #4095, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x5, x7, #1638 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w20, wsp, #801 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add wsp, wsp, #1104 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add wsp, w30, #4084 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x0, x24, #291 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x3, x24, #4095, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x8, sp, #1074 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add sp, x29, #3816 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w0, wsp, #4077 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w4, w20, #546, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub sp, sp, #288 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub wsp, w19, #16 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w13, w23, #291, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w2, #4095 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w20, wsp, #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x3, #1, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp sp, #20, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x30, #4095 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs x4, sp, #3822 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w3, #291, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn wsp, #1365 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn sp, #1092, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov sp, x30 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov wsp, w20 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x11, sp +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w24, wsp +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w3, w5, w7 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add wzr, w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w20, wzr, w4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w4, w6, wzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w11, w13, w15 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add w9, w3, wzr, lsl #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x3, x5, x7 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add xzr, x3, x5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x20, xzr, x4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x4, x6, xzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x11, x13, x15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - add x17, x29, x20, lsl #3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - add x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w3, w5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w20, wzr, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w4, w6, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w11, w13, w15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds w9, w3, wzr, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds x3, x5, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x3, x5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds x20, xzr, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds x4, x6, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds x11, x13, x15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adds x17, x29, x20, lsl #3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - adds x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w3, w5, w7 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub wzr, w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w4, w6, wzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w11, w13, w15 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub w9, w3, wzr, lsl #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x3, x5, x7 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub xzr, x3, x5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x4, x6, xzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x11, x13, x15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sub x17, x29, x20, lsl #3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - sub x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp w3, w5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs w4, w6, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs w11, w13, w15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs w9, w3, wzr, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs x3, x5, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x3, x5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs x4, x6, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs x11, x13, x15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - subs x17, x29, x20, lsl #3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - subs x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn wzr, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w5, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w6, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn w8, w9, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w10, w11, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w12, w13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w14, w15, lsr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w16, w17, lsr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w18, w19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w20, w21, asr #22 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn w22, w23, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x0, x3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn xzr, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x5, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x6, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x8, x9, lsl #15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmn x10, x11, lsl #3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x12, x13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x14, x15, lsr #41 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x16, x17, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x18, x19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x20, x21, asr #55 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmn x22, x23, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp w0, w3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp wzr, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp w5, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp w6, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp w8, w9, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp w10, w11, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp w12, w13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp w14, w15, lsr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp w18, w19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp w20, w21, asr #22 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp w22, w23, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x0, x3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp xzr, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x5, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x6, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x8, x9, lsl #15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp x10, x11, lsl #3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x12, x13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x14, x15, lsr #41 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x16, x17, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x18, x19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x20, x21, asr #55 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - cmp x22, x23, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp wzr, w0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - cmp xzr, x0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc w29, w27, w25 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc wzr, w3, w4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc w9, wzr, w10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc w20, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc x29, x27, x25 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc xzr, x3, x4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc x9, xzr, x10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adc x20, x0, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs w29, w27, w25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs wzr, w3, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs w9, wzr, w10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs w20, w0, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs x29, x27, x25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs xzr, x3, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs x9, xzr, x10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - adcs x20, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc w29, w27, w25 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc wzr, w3, w4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc w9, w10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc w20, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc x29, x27, x25 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc xzr, x3, x4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc x9, x10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbc x20, x0, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - sbcs w29, w27, w25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - sbcs wzr, w3, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs w9, w10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - sbcs w20, w0, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - sbcs x29, x27, x25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - sbcs xzr, x3, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs x9, x10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - sbcs x20, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc w3, w12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc wzr, w9 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc w23, wzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc x29, x30 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc xzr, x0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ngc x0, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs w3, w12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs wzr, w9 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs w23, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs x29, x30 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs xzr, x0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - ngcs x0, xzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx x1, x2, #3, #2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x3, x4, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr wzr, wzr, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx w12, w9, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfiz x4, x5, #52, #11 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx xzr, x4, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfiz x4, xzr, #1, #6 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x5, x6, #12 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfi x4, x5, #52, #11 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil xzr, x4, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfc x4, #1, #6 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil x5, x6, #12, #52 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxtb w1, w2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxtb xzr, w3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxth w9, w10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxth x0, w1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sxtw x3, w30 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - uxtb w1, w2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - uxth w9, w10 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx x3, x30, #0, #32 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w3, w2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w9, w10, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x20, x21, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w1, wzr, #3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w3, w2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w9, w10, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x20, x21, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr wzr, wzr, #3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w3, w2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w9, w10, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x20, x21, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w1, wzr, #3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz x2, x3, #63, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz x9, x10, #5, #59 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz w11, w12, #31, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz w13, w14, #29, #3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfiz xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x2, x3, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x9, x10, #5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w11, w12, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w13, w14, #29 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - sbfx xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfi x2, x3, #63, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil x19, x20, #0, #64 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfi x9, x10, #5, #59 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfi w11, w12, #31, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfi w13, w14, #29, #3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfc xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil x2, x3, #63, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil x19, x20, #0, #64 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil x9, x10, #5, #59 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil w9, w10, #0, #32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil w11, w12, #31, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil w13, w14, #29, #3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - bfxil xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x2, x3, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x9, x10, #5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w11, w12, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w13, w14, #29 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfiz xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x2, x3, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x9, x10, #5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w11, w12, #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w13, w14, #29 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ubfx xzr, xzr, #10, #11 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - cbz w5, #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - cbz x5, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - cbnz x2, #-4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - cbnz x26, #1048572 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - cbz wzr, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - cbnz xzr, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - b.ne #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - b.ge #1048572 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - b.ge #-4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w1, #31, #0, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w3, #0, #15, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp wzr, #15, #13, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x9, #31, #0, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x3, #0, #15, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp xzr, #5, #7, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w1, #31, #0, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w3, #0, #15, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn wzr, #15, #13, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x9, #31, #0, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x3, #0, #15, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn xzr, #5, #7, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w1, wzr, #0, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp w3, w0, #15, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp wzr, w15, #13, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x9, xzr, #0, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp x3, x0, #15, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmp xzr, x5, #7, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w1, wzr, #0, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn w3, w0, #15, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn wzr, w15, #13, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x9, xzr, #0, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn x3, x0, #15, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ccmn xzr, x5, #7, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csel x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset w3, eq +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset x9, pl +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm w20, ne +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm x30, ge +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w2, wzr, wzr, al +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x3, xzr, xzr, nv +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc w3, w5, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc wzr, w4, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset w9, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc x3, x5, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinc xzr, x4, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cset x9, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc w5, w6, w6, nv +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinc x1, x2, x2, al +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv w3, w5, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv wzr, w4, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm w9, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv x3, x5, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cinv xzr, x4, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csetm x9, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv x1, x0, x0, al +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w9, w8, w8, nv +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg w3, w5, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg wzr, w4, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg w9, wzr, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg x3, x5, gt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg xzr, x4, le +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cneg x9, xzr, lt +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csneg x4, x8, x8, al +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - csinv w9, w8, w8, nv +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rbit w0, w7 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rbit x18, x3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev16 w17, w1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev16 x5, x2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev w18, w0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev32 x20, x1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - rev x22, x2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - clz w24, w3 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - clz x26, x4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cls w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - cls x20, x5 +# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - udiv w0, w7, w10 +# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - udiv x9, x22, x4 +# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - sdiv w12, w21, w0 +# CHECK-NEXT: - - - - - - - - - - 5.00 - - - - - - - sdiv x13, x2, x1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w11, w12, w13 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x14, x15, x16 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w17, w18, w19 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x20, x21, x22 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w23, w24, w25 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x26, x27, x28 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w0, w1, w2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x3, x4, x5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl w6, w7, w8 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsl x9, x10, x11 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr w12, w13, w14 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - lsr x15, x16, x17 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr w18, w19, w20 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - asr x21, x22, x23 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w24, w25, w26 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x27, x28, x29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smulh x30, x29, x28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smulh xzr, x27, x26 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umulh x30, x29, x28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umulh x23, x30, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd w1, w3, w7, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd wzr, w0, w9, w11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd w13, wzr, w4, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd w19, w30, wzr, w29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - mul w4, w5, w6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd x1, x3, x7, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd xzr, x0, x9, x11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd x13, xzr, x4, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - madd x19, x30, xzr, x29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - mul x4, x5, x6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub w1, w3, w7, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub wzr, w0, w9, w11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub w13, wzr, w4, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub w19, w30, wzr, w29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - mneg w4, w5, w6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub x1, x3, x7, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub xzr, x0, x9, x11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub x13, xzr, x4, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - msub x19, x30, xzr, x29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - mneg x4, x5, x6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smaddl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smaddl xzr, w10, w11, x12 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smaddl x13, wzr, w14, x15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smaddl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smull x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smsubl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smsubl xzr, w10, w11, x12 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smsubl x13, wzr, w14, x15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - smsubl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smnegl x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - umaddl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - umaddl xzr, w10, w11, x12 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - umaddl x13, wzr, w14, x15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - umaddl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umull x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - umsubl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - umsubl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umnegl x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smulh x30, x29, x28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smulh x23, x22, xzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umulh x23, x22, xzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - mul x19, x20, xzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - mneg w21, w22, w23 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smull x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umull x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - smnegl x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - umnegl x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr w3, w5, w7, #0 +# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr w11, w13, w17, #31 +# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr x3, x5, x7, #15 +# CHECK-NEXT: - - - - - - - - - - 0.75 0.75 0.25 0.25 - - - - extr x11, x13, x17, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x19, x23, #24 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror x29, xzr, #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - ror w9, w13, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmp s3, s5 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmpe s29, s30 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmp d4, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmpe d26, d22 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmp s1, s31, #0, eq +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmp s3, s0, #15, hs +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmp s31, s15, #13, hs +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmp d9, d31, #0, le +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmp d3, d0, #15, gt +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmp d31, d5, #7, ne +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmpe s1, s31, #0, eq +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmpe s3, s0, #15, hs +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmpe s31, s15, #13, hs +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmpe d9, d31, #0, le +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmpe d3, d0, #15, gt +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fccmpe d31, d5, #7, ne +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcsel s3, s20, s9, pl +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcsel d9, d10, d11, mi +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s0, s1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs s2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg s4, s5 +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt s6, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d8, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, s11 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintp s14, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintm s16, s17 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintz s18, s19 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinta s20, s21 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintx s22, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinti s24, s25 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d0, d1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs d2, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg d4, d5 +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt d6, d7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s8, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, d11 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn d12, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintp d14, d15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintm d16, d17 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintz d18, d19 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinta d20, d21 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintx d22, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinti d24, d25 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s26, h27 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d28, h29 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s20, s19, s17 +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv s1, s2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd s4, s5, s6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub s7, s8, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin s13, s14, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm s16, s17, s18 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm s19, s20, s21 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul s22, s23, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul d20, d19, d17 +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv d1, d2, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d4, d5, d6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub d7, d8, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax d10, d11, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin d13, d14, d15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm d16, d17, d18 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm d19, d20, d21 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul d22, d23, d24 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, h20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, h0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, h30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, h0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, s20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, s0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, s30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, s0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs wzr, d20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs w19, d0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x12, d30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs x19, d0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, h20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, h0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, h30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, h0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, s20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, s0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, s30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, s0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu wzr, d20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu w19, d0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x12, d30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu x19, d0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtns w3, h31 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtns xzr, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtnu wzr, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtnu x0, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtps wzr, h9 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtps x12, h20 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtpu w30, h23 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtpu x29, h3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtms w2, h3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtms x4, h5 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtmu w6, h7 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtmu x8, h9 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w10, h11 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w14, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x15, h16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h17, w18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h19, x20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf h21, w22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf h23, x24 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtas w25, h26 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtas x27, h28 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtau w29, h30 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtau xzr, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtns w3, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtns xzr, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtnu wzr, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtnu x0, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtps wzr, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtps x12, s20 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtpu w30, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtpu x29, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtms w2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtms x4, s5 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtmu w6, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtmu x8, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w10, s11 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w14, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x15, s16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s17, w18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s19, x20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf s21, w22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf s23, x24 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtas w25, s26 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtas x27, s28 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtau w29, s30 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtau xzr, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtns w3, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtns xzr, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtnu wzr, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtnu x0, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtps wzr, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtps x12, d20 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtpu w30, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtpu x29, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtms w2, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtms x4, d5 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtmu w6, d7 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtmu x8, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs w10, d11 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs x12, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu w14, d15 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu x15, d16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d17, w18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - scvtf d19, x20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d21, w22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ucvtf d23, x24 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtas w25, d26 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtas x27, d28 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtau w29, d30 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtau xzr, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - fmov w3, s9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - fmov s9, w3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - fmov x20, d31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - fmov d1, x15 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - fmov x3, v12.d[1] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 fmov v1.d[1], x19 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s2, #0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s3, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d30, #16.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s4, #1.06250000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d10, #1.93750000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s12, #-1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d16, #8.50000000 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w3, #0 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x29, #4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw xzr, #-4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr s0, #8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr d0, #1048572 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr q0, #-1048576 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - prfm pldl1strm, #0 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - prfm #22, #0 +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stxrb w18, w8, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stxrh w24, w15, [x16] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stxr w5, w6, [x17] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stxr w1, x10, [x21] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldxrb w30, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldxrh w17, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldxr w22, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldxr x11, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldxr x11, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldxr x11, [x29] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stxp w12, w11, w10, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stxp wzr, x27, x9, [x12] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldxp w0, wzr, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldxp x17, x0, [x18] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldxp x17, x0, [x18] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stlxrb w12, w22, [x0] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stlxrh w10, w1, [x1] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stlxr w9, w2, [x2] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stlxr w9, x3, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldaxrb w8, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldaxrh w7, [x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr w6, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr x5, [x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr x5, [x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldaxr x5, [x6] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stlxp w4, w5, w6, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - stlxp wzr, x6, x7, [x1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldaxp w5, w18, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldaxp x6, x19, [x22] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldaxp x6, x19, [x22] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stlrb w24, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stlrh w25, [x30] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stlr w26, [x29] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stlr x27, [x28] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stlr x27, [x28] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stlr x27, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldarb w23, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldarh w22, [x30] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldar wzr, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldar x21, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldar x21, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldar x21, [x28] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sturb w9, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sturh wzr, [x12, #255] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stur w16, [x0, #-256] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stur x28, [x14, #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldurb w1, [x20, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldurh w20, [x1, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur w12, [sp, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur xzr, [x12, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldursb x9, [x7, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldursh x17, [x19, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldursw x20, [x15, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - prfum pldl2keep, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldursb w19, [x1, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldursh w15, [x21, #-256] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur b0, [sp, #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur h12, [x12, #-1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur s15, [x0, #255] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur d31, [x5, #25] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stur q9, [x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur b3, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur h5, [x4, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur s7, [x12, #-1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur d11, [x19, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldur q13, [x1, #2] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w9, [x2], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w10, [x3], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w19, [sp], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w20, [x30], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w21, [x12], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str xzr, [x9], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x2, [x3], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w9, [x2], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w10, [x3], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w19, [sp], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w20, [x30], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w21, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb wzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh wzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w19, [x12], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b0, [x0], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b3, [x3], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b5, [sp], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h10, [x10], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h13, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h15, [sp], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s20, [x20], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s23, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s25, [x0], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d20, [x20], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d23, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d25, [x0], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b0, [x0], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b3, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b5, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h10, [x10], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h13, [x23], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h15, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s20, [x20], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s23, [x23], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s25, [x0], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d20, [x20], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d23, [x23], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d25, [x0], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q20, [x1], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q23, [x9], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q25, [x20], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q10, [x1], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q22, [sp], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q21, [x20], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x3, [x4, #0]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w9, [x2, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strb w10, [x3, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w9, [x2, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - strh w10, [x3, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w19, [sp, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w20, [x30, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str w21, [x12, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str xzr, [x9, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x2, [x3, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - str x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w9, [x2, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrb w10, [x3, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w9, [x2, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrh w10, [x3, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w19, [sp, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w20, [x30, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr w21, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsw x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb wzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsb w19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh wzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldrsh w19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b0, [x0, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b3, [x3, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str b5, [sp, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h10, [x10, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h13, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str h15, [sp, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s20, [x20, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s23, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str s25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d20, [x20, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d23, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str d25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b0, [x0, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b3, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr b5, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h10, [x10, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h13, [x23, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr h15, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s20, [x20, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s23, [x23, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr s25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d20, [x20, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d23, [x23, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr d25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q20, [x1, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q23, [x9, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q25, [x20, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q10, [x1, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q22, [sp, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q21, [x20, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttrb w9, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttrh wzr, [x12, #255] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttr w16, [x0, #-256] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - sttr x28, [x14, #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrb w1, [x20, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrh w20, [x1, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtr w12, [sp, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtr xzr, [x12, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsb x9, [x7, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsh x17, [x19, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsw x20, [x15, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsb w19, [x1, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldtrsh w15, [x21, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x4, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x30, [x12, #32760] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x20, [sp, #8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr xzr, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w2, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w17, [sp, #16380] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w13, [x2, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x2, [x5, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x23, [sp, #16380] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w2, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w23, [x6, #8190] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh wzr, [sp, #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh x29, [x2, #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w26, [x3, #121] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w12, [x2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb w27, [sp, #4095] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb xzr, [x15] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x30, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str w20, [x4, #16380] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strh w17, [sp, #8190] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strb w23, [x3, #4095] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strb wzr, [x2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr b31, [sp, #4095] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr h20, [x2, #8190] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr s10, [x19, #16380] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr d3, [x10, #32760] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str q12, [sp, #65520] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb w10, [x30, x7] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w11, [x29, x3, sxtx] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strb w12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb w15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrb w17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsb x18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w10, [x30, x7, lsl #1] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strh w11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh x13, [x27, x5, sxtx #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsh w16, [x24, w8, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrh w18, [x22, w10, sxtw] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - strh w19, [x21, wzr, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr s9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w10, [x30, x7, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str s12, [x28, xzr, sxtx] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str w13, [x27, x5, sxtx #2] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str w14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w16, [x24, w8, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr w18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldrsw x19, [x21, wzr, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x3, [sp, x5] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr d10, [x30, x7, lsl #3] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - str x11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x13, [x27, x5, sxtx #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - prfm pldl1keep, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x16, [x24, w8, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldr x18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - str d19, [x21, wzr, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q10, [x30, x7, lsl #4] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q13, [x27, x5, sxtx #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q16, [x24, w8, uxtw #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - str q18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldr q19, [x21, wzr, sxtw #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp w3, w5, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stp wzr, w9, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp w2, wzr, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp w9, w10, [sp, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [sp, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x9, x10, [x2, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldpsw x20, x30, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp x21, x29, [x2, #504] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp x22, x23, [x3, #-512] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp x24, x25, [x4, #8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp s29, s28, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp s27, s26, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp s1, s2, [x3, #44] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp d3, d5, [x9, #504] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp d7, d11, [x10, #-512] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldp d2, d3, [x30, #-8] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp q3, q5, [sp] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stp q17, q19, [sp, #1008] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldp q23, q29, [x1, #-1024] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w3, w5, [sp], #0 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - stp wzr, w9, [sp], #252 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w2, wzr, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w9, w10, [sp], #4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [sp], #4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [x2], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x20, x30, [sp], #252 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2], #504 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3], #-512 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4], #8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s29, s28, [sp], #252 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp s27, s26, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s1, s2, [x3], #44 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d3, d5, [x9], #504 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d7, d11, [x10], #-512 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp d2, d3, [x30], #-8 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q3, q5, [sp], #0 +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q17, q19, [sp], #1008 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp q23, q29, [x1], #-1024 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w3, w5, [sp, #0]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.25 0.25 0.25 0.25 - - - - stp wzr, w9, [sp, #252]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w2, wzr, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp w9, w10, [sp, #4]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [sp, #4]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x9, x10, [x2, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 0.50 0.50 - - - - ldpsw x20, x30, [sp, #252]! +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x21, x29, [x2, #504]! +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x22, x23, [x3, #-512]! +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp x24, x25, [x4, #8]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s29, s28, [sp, #252]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp s27, s26, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp s1, s2, [x3, #44]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d3, d5, [x9, #504]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.25 0.25 0.25 0.25 0.50 0.50 - - stp d7, d11, [x10, #-512]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - ldp d2, d3, [x30, #-8]! +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q3, q5, [sp, #0]! +# CHECK-NEXT: - - - - - - - - 1.00 1.00 0.25 0.25 0.25 0.25 0.50 0.50 - - stp q17, q19, [sp, #1008]! +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.25 0.25 0.25 0.25 - - - - ldp q23, q29, [x1, #-1024]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w3, w5, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - stnp wzr, w9, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w2, wzr, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp w9, w10, [sp, #4] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x21, x29, [x2, #504] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x22, x23, [x3, #-512] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp x24, x25, [x4, #8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp s29, s28, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp s27, s26, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp s1, s2, [x3, #44] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp d3, d5, [x9, #504] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp d7, d11, [x10, #-512] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - ldnp d2, d3, [x30, #-8] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp q3, q5, [sp] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - stnp q17, q19, [sp, #1008] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - ldnp q23, q29, [x1, #-1024] +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w3, #983055 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x10, #-6148914691236517206 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w12, w23, w21 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w16, w15, w1, lsl #1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w9, w4, w10, lsl #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, w30, w11 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and x3, x5, x7, lsl #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and x5, x14, x19, asr #4 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, w17, w19, ror #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w0, w2, wzr, lsr #17 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, w30, w11, asr #2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and xzr, x4, x26 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and w3, wzr, w20, ror #2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - and x7, x20, xzr, asr #63 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - bic x13, x20, x14, lsl #47 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - bic w2, w7, w9 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - orr w2, w7, w0, asr #31 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - orr x8, x9, x10, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - orn x3, x5, x7, asr #2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - orn w2, w5, w29 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - ands w7, wzr, w9, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - ands x3, x5, x20, ror #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - bics w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - bics x3, xzr, x3, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - tst w3, w7, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - tst x2, x20, asr #2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x3, x6 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x3, xzr +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov wzr, w2 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz w2, #0, lsl #16 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov w2, #-1235 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x2, #5299989643264 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - mov x2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk w3, #0 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz x4, #0, lsl #16 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk w5, #0, lsl #16 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz x6, #0, lsl #32 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk x7, #0, lsl #32 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movz x8, #0, lsl #48 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - movk x9, #0, lsl #48 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adr x2, #1600 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adrp x21, #6553600 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - adr x0, #262144 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - tbz x12, #62, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - tbz x12, #62, #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - tbz x12, #62, #-32768 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - tbnz x12, #60, #32764 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - b #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - b #-4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - b #134217724 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - br x20 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - 0.50 0.50 - - - - blr xzr +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - ret x10 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - ret +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - eret +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - drps diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s index ab81f9fb04af3..37ae765148396 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-clear-upper-regs.s @@ -80,26 +80,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 0.22 0.22 0.28 0.28 - - - - +# 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: - - - - - - - 0.33 0.33 0.34 0.22 0.22 0.28 0.28 - - - - # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ldr w0, [sp] -# CHECK-NEXT: - - - - - - - 0.22 0.22 0.28 0.28 - - - - add x0, x0, x0 +# 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.33 0.33 0.34 - - - - - - - - ldr w0, [sp] +# CHECK-NEXT: - - - - - - - - - - 0.22 0.22 0.28 0.28 - - - - add x0, x0, x0 # CHECK: Timeline view: # CHECK-NEXT: Index 012345678 @@ -153,26 +156,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ldr b0, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 +# 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.33 0.33 0.34 - - - - - - - - ldr b0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -227,26 +233,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ldr h0, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 +# 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.33 0.33 0.34 - - - - - - - - ldr h0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -301,26 +310,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ldr s0, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 +# 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.33 0.33 0.34 - - - - - - - - ldr s0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d0, d0, d0 # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -375,26 +387,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ld1 { v0.8b }, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.16b, v0.16b, v0.16b +# 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.33 0.33 0.34 - - - - - - - - ld1 { v0.8b }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.16b, v0.16b, v0.16b # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -449,26 +464,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ld1 { v0.4h }, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8h, v0.8h, v0.8h +# 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.33 0.33 0.34 - - - - - - - - ld1 { v0.4h }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8h, v0.8h, v0.8h # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -523,26 +541,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ld1 { v0.2s }, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.4s, v0.4s, v0.4s +# 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.33 0.33 0.34 - - - - - - - - ld1 { v0.2s }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.4s, v0.4s, v0.4s # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -597,26 +618,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - 0.25 0.25 0.25 0.25 # 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] [9] [10] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - ld1 { v0.1d }, [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.2d, v0.2d, v0.2d +# 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.33 0.33 0.34 - - - - - - - - ld1 { v0.1d }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.2d, v0.2d, v0.2d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -671,26 +695,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 0.50 0.50 +# 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: - - - - - - - - - - - - - - 0.50 0.50 0.50 0.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 mov v0.b[0], v1.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - add v0.16b, v0.16b, v0.16b +# 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 mov v0.b[0], v1.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - add v0.16b, v0.16b, v0.16b # CHECK: Timeline view: # CHECK-NEXT: 012345678 @@ -745,26 +772,29 @@ add v0.16b, v0.16b, v0.16b # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 0.50 0.50 +# 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: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 0.50 0.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - 0.50 - 0.50 ld1 { v0.b }[0], [sp] -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - add v0.16b, v0.16b, v0.16b +# 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 - - - - - 0.50 - 0.50 ld1 { v0.b }[0], [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - add v0.16b, v0.16b, v0.16b # CHECK: Timeline view: # CHECK-NEXT: 0123456789 0123456789 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 5ad42d5ff0a13..20e76ef27c470 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 @@ -2451,1238 +2451,1241 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 26.67 49.17 49.17 18.75 7.75 7.75 7.75 431.00 356.50 385.50 311.00 +# 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: - - - - - - - 26.67 49.17 49.17 18.75 7.75 7.75 7.75 431.00 356.50 385.50 311.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs d29, d24 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 add d17, d31, d29 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.2s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.4h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.8b, 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 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.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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv b0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 addv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese v0.16b, v0.16b -# 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, 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 v0.8b, v0.8b, v0.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 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.4h, v0.4h -# 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 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 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 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 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 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 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 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 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dup v0.2d, x28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dup v0.2s, w28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dup v0.4h, w28 -# 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.25 0.25 0.25 0.25 mov b0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov d0, v0.d[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov h0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov s0, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.16b, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2d, v0.d[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2s, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4s, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8b, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext v0.16b, v0.16b, v0.16b, #3 -# 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 v0.4s, v0.4s, v0.4s -# 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.4s, v0.4s -# 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 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 v0.2d, v0.2d, v0.2d -# 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 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 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 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 v0.4s, v0.4s, v0.4s -# 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 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 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.50 - 0.50 - fcvtas d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtas h12, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtau d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtau s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtau h12, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtl v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtl v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtl2 v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtl2 v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtms d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtms s22, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtms h22, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtmu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtmu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtmu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtns d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtns s22, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtns h22, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtnu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtnu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtnu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtps d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtps s22, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtps h22, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtpu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtpu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtpu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtxn s22, d13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtxn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtxn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d12, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s12, s13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s21, s12, #1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzs h21, h14 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzs h21, h12, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d, #3 -# 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 v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.8h, v0.8h -# 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 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s21, s12, #1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzu h21, h12, #1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d, #3 -# 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 v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 2.50 - 2.50 - fdiv v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.4s, v0.4s, v0.4s -# 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 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.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.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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.4s, v0.4s, v0.4s -# 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 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.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 fmla d0, d1, v0.d[1] -# 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 fmls d0, d4, v0.d[1] -# 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 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 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 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 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 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 d13, d13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frecpe s19, s14 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.8h, v0.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.50 - 0.50 - frecpx d16, d19 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frecpx s18, s10 -# 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 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frinta v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frinti v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintm v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintn v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintp v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintx v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frintz v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frsqrte d21, d12 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frsqrte s22, s13 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.8h, v0.8h -# 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 -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 5.50 - 5.50 - fsqrt v0.8h, v0.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 0.25 0.25 0.25 0.25 - - - - ld1 { v0.8h, v1.8h }, [sp], #32 -# 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: - - - - 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 { v0.2s, v1.2s }, [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 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 -# 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 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] -# 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.2d }, [x15], x16 -# 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.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.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.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [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.4h, v1.4h }, [x0], #4 -# 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.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.1d, v1.1d }, [sp], x8 -# 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: - - - - 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 ld3r { v0.8b, v1.8b, v2.8b }, [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 { v0.2s, v1.2s, v2.2s }, [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.1d, v1.1d, v2.1d }, [x0], x0 -# 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.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 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [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], #16 -# 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: - - - - - - - - - - - 0.50 - 0.50 - mla v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - mls v0.4h, v0.4h, v0.4h -# 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: - - - - - - - - - - - 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] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.d[1], v0.d[1] -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.b[0], w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.h[1], w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.s[2], w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.d[1], x8 -# 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 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 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 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.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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg 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 mov v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v0.8h, #31 -# 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 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - pmull2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.2s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.4h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.8b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.16b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.4s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.8h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v21.8b, v1.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v30.16b, v31.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v0.4h, v9.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v21.8b, v1.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v30.16b, v31.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v4.8h, v7.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v0.16b, v31.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v1.8b, v9.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v13.4h, v21.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v2.8h, v4.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v4.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v6.4s, v8.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.2s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.4h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.8b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.16b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.4s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.8h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 saba v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sabal v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sabal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sabal v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sabal2 v0.2d, v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 saddlv d0, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 saddlv s0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv s0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv h0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 saddlv h0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.8h, v0.8h, v0.8b -# 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: - - - - - - - - - - - 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 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13, #32 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s, #3 -# 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 v0.8h, v0.8h -# 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 shl d7, d10, #12 -# 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.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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 shrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 shrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 shrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.4s, v0.2d, #3 -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sli v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sli v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sli v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sli v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sli v0.8h, v0.8h, #3 -# 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 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 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 smaxv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv h0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 smaxv s0, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv b0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 sminv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sminv h0, v0.4h -# 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.4s, v0.4h, v0.4h -# 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 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.2d, v0.4s, v0.4s -# 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 v0.4s, v0.4h, v0.4h -# 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 v0.4s, v0.8h, v0.8h -# 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs h21, h15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs s20, s12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmlal d8, s9, v0.s[1] -# 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.4s, v0.8h, v0.8h -# 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.4s, v0.8h, v0.8h -# 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] -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmulh s20, s21, s2 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmull d1, s1, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdmull d15, s22, s12 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmull s1, h1, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdmull s12, h22, h12 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg b19, b14 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg d18, d12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg h21, h15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg s20, s12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 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: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah h0, h1, h2 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah v0.4h, v1.4h, v2.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah v0.8h, v1.8h, v2.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah s0, s1, s2 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah v0.2s, v1.2s, v2.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - 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: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh h0, h1, h2 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.4h, v1.4h, v2.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.8h, v1.8h, v2.8h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh s0, s1, s2 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.2s, v1.2s, v2.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.4s, v1.4s, v2.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - 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] -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh s20, s21, s2 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshl d31, d31, d31 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshl h3, h4, h15 -# 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.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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun b17, h10, #6 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun h10, s13, #15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun s22, d16, #31 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl b11, b19, #7 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl d15, d16, #51 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl d31, d31, d31 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl h13, h18, #11 -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu b15, b18, #6 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu d11, d13, #32 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu h19, h17, #6 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu s16, s14, #25 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn b10, h15, #5 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn h17, s10, #4 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn s18, d10, #31 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun b15, h10, #7 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun h20, s14, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun s10, d15, #15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub s20, s10, s7 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn b18, h18 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn h20, s17 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn s19, d14 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun b19, h14 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun h21, s15 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun s20, d12 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sri d10, d12, #14 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sri v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshl d16, d16, d16 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshl v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshl v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 srshr d19, d18, #7 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 srsra d15, d11, #19 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshl d31, d31, d31 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshl v0.2d, v0.2d, v0.2d -# 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 v0.2d, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshll2 v0.4s, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssra d18, d12, #21 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.8h, v0.8h, v0.8b -# 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 { v0.16b }, [x0] -# 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 0.25 0.25 0.25 0.25 1.50 1.50 - - st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 -# 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.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.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 { 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: - - - - - 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: - - - - - 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.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.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: - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd s21, s12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbx v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbx v0.16b, { v0.16b, v1.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 - - tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 2.50 2.50 - - tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbx v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 1.00 1.00 - - tbx v0.8b, { v0.16b, v1.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 - - tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 2.50 2.50 - - tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4s, v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uabal2 v0.2d, v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uaddlv d0, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uaddlv s0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv s0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv h0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 uaddlv h0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.8h, v0.8h, v0.8b -# 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: - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 -# 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 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s, #3 -# 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 v0.8h, v0.8h -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv b0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 umaxv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 umaxv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv h0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 umaxv s0, v0.4s -# 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 uminp v0.2s, v0.2s, v0.2s -# 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 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - 1.00 uminv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uminv h0, v0.4h -# 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - umlal v0.8h, v0.8b, v0.8b -# 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 v0.4s, v0.4h, v0.4h -# 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 v0.4s, v0.8h, v0.8h -# 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 w0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov w0, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 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 v0.4s, v0.4h, v0.4h -# 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 v0.4s, v0.8h, v0.8h -# 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 v0.8h, v0.8h, v0.8h -# 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 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.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 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn s10, d10, #25 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl b11, b20, b30 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl b18, b15, #6 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl d15, d12, #19 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl h11, h18, #7 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl s14, s19, #18 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl s23, s20, s16 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.2d, v0.2d, #3 -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn b12, h10, #7 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn h10, s14, #5 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn s10, d12, #13 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.8b, v0.8h, #3 -# 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 d16, d16, d16 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v0.4h, v0.4h, v0.4h -# 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.4s, v0.4s -# 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.50 - 0.50 urshl d8, d7, d4 -# 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 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshr d20, d23, #31 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ursra d18, d10, #13 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ursra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ursra v0.4h, v0.4h, #3 -# 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 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 ushll2 v0.8h, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr d10, d17, #18 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ushr v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 ushr v0.4h, v0.4h, #3 -# 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 w0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov w0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd b19, b14 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd d18, d22 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd h20, h15 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd s21, s12 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usra d20, d13, #61 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - 0.50 - 0.50 usra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.8h, v0.8h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.2d, v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.4s, v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.8h, v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8h, v0.8h, v0.8h +# 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 abs d29, d24 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add d17, d31, d29 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.2s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.4h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.8b, 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 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 addv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese v0.16b, v0.16b +# 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, 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 v0.8b, v0.8b, v0.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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.4h, v0.4h +# 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 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 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 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 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 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 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 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 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dup v0.2d, x28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dup v0.2s, w28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dup v0.4h, w28 +# 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.25 0.25 0.25 0.25 mov b0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov d0, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov h0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov s0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.16b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2d, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext v0.16b, v0.16b, v0.16b, #3 +# 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 v0.4s, v0.4s, v0.4s +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.4s, v0.4s +# 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 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 v0.2d, v0.2d, v0.2d +# 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 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 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 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 v0.4s, v0.4s, v0.4s +# 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 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 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.50 - 0.50 - fcvtas d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl2 v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl2 v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn s22, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs h21, h14 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs h21, h12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d, #3 +# 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 v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs v0.8h, v0.8h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu h21, h12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d, #3 +# 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 v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.50 - 2.50 - fdiv v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.4s, v0.4s, v0.4s +# 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 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.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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.4s, v0.4s, v0.4s +# 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 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.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 fmla d0, d1, v0.d[1] +# 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 fmls d0, d4, v0.d[1] +# 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 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 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 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 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 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 d13, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe s19, s14 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe v0.8h, v0.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.50 - 0.50 - frecpx d16, d19 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx s18, s10 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frintz v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte d21, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte v0.8h, v0.8h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 3.50 - 3.50 - fsqrt v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 5.50 - 5.50 - fsqrt v0.8h, v0.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 0.25 0.25 0.25 0.25 - - - - ld1 { v0.8h, v1.8h }, [sp], #32 +# 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: - - - - - - - 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 { v0.2s, v1.2s }, [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 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 +# 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 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] +# 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.2d }, [x15], x16 +# 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.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.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.50 0.50 0.50 0.50 ld2r { v0.8b, v1.8b }, [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.4h, v1.4h }, [x0], #4 +# 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.25 0.25 0.25 0.25 0.50 0.50 0.50 0.50 ld2r { v0.1d, v1.1d }, [sp], x8 +# 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: - - - - - - - 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 ld3r { v0.8b, v1.8b, v2.8b }, [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 { v0.2s, v1.2s, v2.2s }, [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.1d, v1.1d, v2.1d }, [x0], x0 +# 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.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 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [sp] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - 1.00 1.00 1.00 1.00 ld4r { v0.2d, v1.2d, v2.2d, v3.2d }, [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], #16 +# 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: - - - - - - - - - - - - - - 0.50 - 0.50 - mla v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - mls v0.4h, v0.4h, v0.4h +# 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: - - - - - - - - - - - - - - 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] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.d[1], v0.d[1] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.b[0], w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.h[1], w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.s[2], w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.25 0.25 0.25 0.25 mov v0.d[1], x8 +# 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 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 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 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg 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 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v0.8h, #31 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - pmull2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.2s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.4h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.8b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.16b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.4s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v21.8b, v1.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v30.16b, v31.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v0.4h, v9.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v21.8b, v1.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v30.16b, v31.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v4.8h, v7.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v0.16b, v31.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v1.8b, v9.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v13.4h, v21.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v2.8h, v4.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v4.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v6.4s, v8.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.2s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.4h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.8b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.16b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.4s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saba v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sabal2 v0.2d, v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 saddlv h0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.8h, v0.8h, v0.8b +# 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: - - - - - - - - - - - - - - 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s, #3 +# 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 v0.8h, v0.8h +# 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 shl d7, d10, #12 +# 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.4s, v0.2d, #3 +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.8h, v0.8h, #3 +# 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 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv s0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 sminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sminv h0, v0.4h +# 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.4s, v0.4h, v0.4h +# 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 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.2d, v0.4s, v0.4s +# 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 v0.4s, v0.4h, v0.4h +# 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 v0.4s, v0.8h, v0.8h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs h21, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs s20, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal d8, s9, v0.s[1] +# 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.4s, v0.8h, v0.8h +# 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# 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] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh s20, s21, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d1, s1, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdmull d15, s22, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s1, h1, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdmull s12, h22, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg b19, b14 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg d18, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg h21, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg s20, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 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: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - 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: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - 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] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh s20, s21, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl d31, d31, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl h3, h4, h15 +# 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun b17, h10, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun h10, s13, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqrshrun s22, d16, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl b11, b19, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl d15, d16, #51 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl d31, d31, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl h13, h18, #11 +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu b15, b18, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu d11, d13, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu h19, h17, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu s16, s14, #25 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn b10, h15, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn h17, s10, #4 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrn s18, d10, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun b15, h10, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun h20, s14, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun s10, d15, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqshrun2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub s20, s10, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn b18, h18 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn h20, s17 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn s19, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun b19, h14 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun h21, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun s20, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sri d10, d12, #14 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl d16, d16, d16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srshr d19, d18, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srsra d15, d11, #19 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshl d31, d31, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.2d, v0.2d, v0.2d +# 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 v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v0.4s, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssra d18, d12, #21 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.8h, v0.8h, v0.8b +# 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 { v0.16b }, [x0] +# 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 0.25 0.25 0.25 0.25 1.50 1.50 - - st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 +# 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.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.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 { 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: - - - - - - - - 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: - - - - - - - - 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.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.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: - - - - - - - 1.00 1.00 1.00 - - - - 0.75 0.75 0.75 0.75 st4 { v0.b, v1.b, v2.b, v3.b }[15], [x0] +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd s21, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.50 2.50 - - tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 1.00 - - tbx v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.50 2.50 - - tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4s, v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uabal2 v0.2d, v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 uaddlv h0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.8h, v0.8h, v0.8b +# 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: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s, #3 +# 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 v0.8h, v0.8h +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 umaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv s0, v0.4s +# 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 uminp v0.2s, v0.2s, v0.2s +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - 1.00 uminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uminv h0, v0.4h +# 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.8h, v0.8b, v0.8b +# 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 v0.4s, v0.4h, v0.4h +# 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 v0.4s, v0.8h, v0.8h +# 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 w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov w0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 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 v0.4s, v0.4h, v0.4h +# 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 v0.4s, v0.8h, v0.8h +# 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 v0.8h, v0.8h, v0.8h +# 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 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqrshrn s10, d10, #25 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl b11, b20, b30 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl b18, b15, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl d15, d12, #19 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl h11, h18, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl s14, s19, #18 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.2d, v0.2d, #3 +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn b12, h10, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn h10, s14, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqshrn s10, d12, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.8b, v0.8h, #3 +# 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 d16, d16, d16 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v0.4h, v0.4h, v0.4h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.4s, v0.4s +# 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.50 - 0.50 urshl d8, d7, d4 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urshr d20, d23, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ursra d18, d10, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.4h, v0.4h, #3 +# 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 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 ushll2 v0.8h, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ushr d10, d17, #18 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.4h, v0.4h, #3 +# 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 w0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov w0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smov x0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd b19, b14 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd d18, d22 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd h20, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd s21, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usra d20, d13, #61 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.8h, v0.8h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.2d, v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.4s, v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8h, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-sve-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-sve-instructions.s index f120f5feaf7ce..6b7616d68d4cd 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-sve-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-sve-instructions.s @@ -4825,2425 +4825,2428 @@ zip2 z31.s, z31.s, z31.s # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - 88.67 500.67 500.67 797.50 2.50 92.50 92.50 1252.00 921.00 178.50 181.50 +# 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: - - - - - - - 88.67 500.67 500.67 797.50 2.50 92.50 92.50 1252.00 921.00 178.50 181.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z0.b, p0/m, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - abs z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z0.s, z1.s, z2.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.b, p5/m, z21.b, z10.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.b, z10.b, z21.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.d, p5/m, z21.d, z10.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.d, z10.d, z21.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.h, p5/m, z21.h, z10.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.h, z10.h, z21.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.s, p5/m, z21.s, z10.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z21.s, z10.s, z21.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.b, p3/m, z23.b, z13.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.b, z13.b, z8.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.d, p3/m, z23.d, z13.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.h, p3/m, z23.h, z13.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.h, z13.h, z8.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.s, p3/m, z23.s, z13.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z23.s, z13.s, z8.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - add z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addpl sp, sp, #31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addpl x0, x0, #-32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addpl x21, x21, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addpl x23, x8, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addvl sp, sp, #31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addvl x0, x0, #-32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addvl x21, x21, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - addvl x23, x8, #-1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, lsl #1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, lsl #2] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, lsl #3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw #1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw #2] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw #3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw #1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw #2] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw #3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s, lsl #1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s, lsl #2] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s, lsl #3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s] -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - and p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z0.d, z0.d, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z0.d, z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z0.s, z0.s, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z0.s, z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z23.h, z23.h, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z23.h, z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z5.b, z5.b, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - and z5.b, z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ands p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - andv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - andv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - andv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - andv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.b, p0/m, z0.b, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.b, z1.b, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.h, p0/m, z0.h, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.h, z1.h, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.s, p0/m, z0.s, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z0.s, z1.s, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asr z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrd z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - asrr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - bfcvt z0.h, p0/m, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - bfcvtnt z0.h, p0/m, z1.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfdot z0.s, z1.h, z2.h[0] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfdot z0.s, z1.h, z2.h[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalb z0.s, z1.h, z2.h[0] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalb z0.s, z1.h, z2.h[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalb z10.s, z21.h, z14.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalb z21.s, z14.h, z3.h[2] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z2.h[0] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z2.h[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmlalt z14.s, z10.h, z21.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - bic p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - bic p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bic z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bic z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bic z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bic z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bic z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - bic z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - bics p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - bics p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brka p0.b, p15/m, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brka p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkas p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkb p0.b, p15/m, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkb p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkbs p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkn p0.b, p15/z, p1.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkn p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkns p0.b, p15/z, p1.b, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkns p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkpa p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkpa p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkpas p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkpas p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkpb p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - brkpb p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkpbs p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - brkpbs p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta b0, p7, b0, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta d0, p7, d0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta h0, p7, h0, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta s0, p7, s0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clasta w0, p7, w0, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clasta w0, p7, w0, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clasta w0, p7, w0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clasta x0, p7, x0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta z0.b, p7, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta z0.d, p7, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta z0.h, p7, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clasta z0.s, p7, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb b0, p7, b0, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb d0, p7, d0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb h0, p7, h0, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb s0, p7, s0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clastb w0, p7, w0, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clastb w0, p7, w0, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clastb w0, p7, w0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - clastb x0, p7, x0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb z0.b, p7, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb z0.d, p7, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb z0.h, p7, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - clastb z0.s, p7, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cls z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cls z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cls z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cls z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - clz z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - clz z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - clz z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - clz z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmple p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnot z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnot z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnot z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnot z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnt z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnt z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnt z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - cnt z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntb x0, #28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntd x0, #28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cnth x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cnth x0, #28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cnth x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cnth x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntw x0, #28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - cntw x0, pow2 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - compact z31.d, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - compact z31.s, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.b, p7/m, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.d, p7/m, sp -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.h, p7/m, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.s, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermeq w30, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermeq wzr, w30 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermeq x30, xzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermeq xzr, x30 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermne w30, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermne wzr, w30 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermne x30, xzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ctermne xzr, x30 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decb x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decb x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decd x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decd x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dech x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dech x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dech x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dech x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - dech x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp x0, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp x0, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp x0, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp x0, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp xzr, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp xzr, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp xzr, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decp xzr, p15.s -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - decp z31.d, p15.d -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - decp z31.h, p15.h -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - decp z31.s, p15.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decw x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decw x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - decw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #256 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.s, #512 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z0.b, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z0.d, x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z31.h, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z31.s, wsp -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - dupm z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - dupm z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - dupm z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - dupm z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - eor p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z0.d, z0.d, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z0.d, z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z0.s, z0.s, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z0.s, z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z23.h, z23.h, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z23.h, z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z5.b, z5.b, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - eor z5.b, z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - eors p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - eorv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - eorv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - eorv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - eorv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ext z31.b, z31.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ext z31.b, z31.b, z0.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fabd z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fabd z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fabd z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fabs z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fabs z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fabs z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fadd z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 1.50 1.50 - - fadda d0, p7, d0, z31.d -# CHECK-NEXT: - - - - - - - - - - - 18.00 - - - fadda h0, p7, h0, z31.h -# CHECK-NEXT: - - - - - - - - - - - 10.00 - - - fadda s0, p7, s0, z31.s -# CHECK-NEXT: - - - - - - - - - - - 2.25 2.25 0.25 0.25 faddv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 3.00 3.00 - - faddv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.75 2.75 0.25 0.25 faddv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcadd z0.d, p0/m, z0.d, z0.d, #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcadd z0.h, p0/m, z0.h, z0.h, #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcadd z0.s, p0/m, z0.s, z0.s, #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcadd z31.d, p7/m, z31.d, z31.d, #270 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcadd z31.h, p7/m, z31.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcadd z31.s, p7/m, z31.s, z31.s, #270 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.d, p0/m, z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.h, p0/m, z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.h, p0/m, z1.h, z2.h, #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.h, z0.h, z0.h[0], #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.s, p0/m, z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z0.s, p0/m, z1.s, z2.s, #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z21.s, z10.s, z5.s[1], #90 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z23.s, z13.s, z8.s[0], #270 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z29.d, p7/m, z30.d, z31.d, #180 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z29.h, p7/m, z30.h, z31.h, #180 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z29.s, p7/m, z30.s, z31.s, #180 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z31.d, p7/m, z31.d, z31.d, #270 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z31.h, p7/m, z31.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z31.h, z31.h, z7.h[3], #270 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fcmla z31.s, p7/m, z31.s, z31.s, #270 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmle p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmle p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmle p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmlt p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmlt p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmlt p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmuo p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmuo p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcmuo p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvt z0.d, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvt z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvt z0.h, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - fcvt z0.h, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvt z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - fcvt z0.s, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs z0.d, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 4.00 - - - fcvtzs z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzs z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - fcvtzs z0.s, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - fcvtzs z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu z0.d, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 4.00 - - - fcvtzu z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - fcvtzu z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - fcvtzu z0.s, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - fcvtzu z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - fdiv z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 10.00 - - - fdiv z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - fdiv z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - fdivr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 10.00 - - - fdivr z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - fdivr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fexpa z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fexpa z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fexpa z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmad z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmad z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmad z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmax z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmaxnm z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 2.25 2.25 0.25 0.25 fmaxnmv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 3.00 3.00 - - fmaxnmv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.75 2.75 0.25 0.25 fmaxnmv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 2.25 2.25 0.25 0.25 fmaxv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 3.00 3.00 - - fmaxv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.75 2.75 0.25 0.25 fmaxv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmin z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fminnm z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 2.25 2.25 0.25 0.25 fminnmv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 3.00 3.00 - - fminnmv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.75 2.75 0.25 0.25 fminnmv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 2.25 2.25 0.25 0.25 fminv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 3.00 3.00 - - fminv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.75 2.75 0.25 0.25 fminv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmla z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmla z0.d, z1.d, z7.d[1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmla z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmla z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmla z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmla z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmls z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmls z0.d, z1.d, z7.d[1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmls z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmls z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmls z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmls z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, #-10.00000000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, #0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, p0/m, #-10.00000000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, p0/m, #0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.h, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.h, p0/m, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.s, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmov z0.s, p0/m, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmsb z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmsb z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmsb z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, z0.d, z0.d[0] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, z0.h, z0.h[0] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, z0.s, z0.s[0] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z31.d, p7/m, z31.d, #2.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z31.d, z31.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z31.h, p7/m, z31.h, #2.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z31.h, z31.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z31.s, p7/m, z31.s, #2.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmul z31.s, z31.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmulx z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmulx z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fmulx z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fneg z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fneg z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fneg z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmad z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmad z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmad z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmla z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmla z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmla z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmls z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmls z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmls z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmsb z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmsb z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fnmsb z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frecpe z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 4.00 - - - frecpe z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - frecpe z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - frecps z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - frecps z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - frecps z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frecpx z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frecpx z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frecpx z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frinta z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frinta z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frinta z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frinti z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frinti z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frinti z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintm z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintm z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintm z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintn z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintn z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintn z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintp z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintp z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintp z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintx z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintx z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintx z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintz z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintz z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frintz z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - frsqrte z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 4.00 - - - frsqrte z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - frsqrte z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - frsqrts z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - frsqrts z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - frsqrts z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fscale z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fscale z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fscale z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - fsqrt z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 10.00 - - - fsqrt z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - fsqrt z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsub z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - fsubr z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftmad z0.d, z0.d, z31.d, #7 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftmad z0.h, z0.h, z31.h, #7 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftmad z0.s, z0.s, z31.s, #7 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftsmul z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftsmul z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftsmul z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftssel z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftssel z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ftssel z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incb x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incb x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incd x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incd x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - incd z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - incd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - inch x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - inch x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - inch x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - inch x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - inch x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - inch z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - inch z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp x0, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp x0, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp x0, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp x0, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp xzr, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp xzr, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp xzr, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incp xzr, p15.s -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - incp z31.d, p15.d -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - incp z31.h, p15.h -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - incp z31.s, p15.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incw x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incw x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - incw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - incw z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - incw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - index z0.b, #0, #0 -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - index z0.d, #0, #0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - index z0.h, #0, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z0.h, w0, w0 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - index z0.s, #0, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z21.b, w10, w21 -# CHECK-NEXT: - - - - - - - 2.00 - - - 2.00 - - - index z21.d, x10, x21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z21.s, w10, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z23.b, #13, w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z23.b, w13, #8 -# CHECK-NEXT: - - - - - - - 2.00 - - - 2.00 - - - index z23.d, #13, x8 -# CHECK-NEXT: - - - - - - - 2.00 - - - 2.00 - - - index z23.d, x13, #8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z23.h, #13, w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z23.h, w13, #8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z23.s, #13, w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z23.s, w13, #8 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - index z31.b, #-1, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.b, #-1, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.b, wzr, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.b, wzr, wzr -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - index z31.d, #-1, #-1 -# CHECK-NEXT: - - - - - - - 2.00 - - - 2.00 - - - index z31.d, #-1, xzr -# CHECK-NEXT: - - - - - - - 2.00 - - - 2.00 - - - index z31.d, xzr, #-1 -# CHECK-NEXT: - - - - - - - 2.00 - - - 2.00 - - - index z31.d, xzr, xzr -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - index z31.h, #-1, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.h, #-1, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.h, wzr, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.h, wzr, wzr -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - index z31.s, #-1, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.s, #-1, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.s, wzr, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - index z31.s, wzr, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z0.b, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z0.d, x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z0.h, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z0.s, w0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - insr z31.b, b31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z31.b, wzr -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - insr z31.d, d31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z31.d, xzr -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - insr z31.h, h31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z31.h, wzr -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - insr z31.s, s31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - insr z31.s, wzr -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lasta b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lasta d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lasta h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lasta s0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lasta w0, p7, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lasta w0, p7, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lasta w0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lasta x0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lastb b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lastb d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lastb h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lastb s0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lastb w0, p7, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lastb w0, p7, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lastb w0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - 1.00 - - lastb x0, p7, z31.d -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.b }, p0/z, [sp, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.b }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.s }, p5/z, [x10, x21] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z23.d }, p3/z, [x13, x8] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.b }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1b { z5.h }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1d { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1d { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1d { z23.d }, p3/z, [sp, x8, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1d { z23.d }, p3/z, [x13, x8, lsl #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z23.d }, p3/z, [x13, z8.d, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1d { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z31.d }, p7/z, [z31.d, #248] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z21.s }, p5/z, [x10, x21, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z23.d }, p3/z, [x13, x8, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1h { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z5.h }, p3/z, [sp, x16, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z5.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.b }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.d }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.h }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.s }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rd { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rd { z31.d }, p7/z, [sp, #504] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rh { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rh { z31.d }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rh { z31.h }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rh { z31.s }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z0.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z21.b }, p5/z, [x10, #112] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z23.b }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z31.b }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z0.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #112] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z31.d }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1rqh { z0.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #112] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z31.h }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z0.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #112] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z31.s }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z31.d }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z31.h }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z31.s }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z31.d }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z31.s }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rsw { z31.d }, p7/z, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rw { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rw { z31.d }, p7/z, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1rw { z31.s }, p7/z, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.h }, p0/z, [sp, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.h }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sb { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sb { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.s }, p5/z, [x10, x21] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z23.d }, p3/z, [x13, x8] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sb { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sb { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sh { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1sh { z21.s }, p5/z, [sp, x21, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sh { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1sh { z21.s }, p5/z, [x10, x21, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1sh { z23.d }, p3/z, [x13, x8, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sh { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sh { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sw { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sw { z23.d }, p3/z, [sp, x8, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sw { z23.d }, p3/z, [x13, x8, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1sw { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.s }, p5/z, [sp, x21, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.s }, p5/z, [x10, x21, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z23.d }, p3/z, [x13, x8, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ld1w { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z31.s }, p7/z, [z31.s, #124] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z0.b, z1.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z0.b, z1.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z21.b, z22.b }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z23.b, z24.b }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z5.b, z6.b }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z0.d, z1.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z0.d, z1.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z21.d, z22.d }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z23.d, z24.d }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z5.d, z6.d }, p3/z, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z0.h, z1.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z0.h, z1.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z21.h, z22.h }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z23.h, z24.h }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z5.h, z6.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z0.s, z1.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z0.s, z1.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z21.s, z22.s }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z23.s, z24.s }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z5.s, z6.s }, p3/z, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3b { z0.b - z2.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3b { z0.b - z2.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3b { z21.b - z23.b }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3b { z23.b - z25.b }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3b { z5.b - z7.b }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3d { z0.d - z2.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3d { z0.d - z2.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3d { z21.d - z23.d }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3d { z23.d - z25.d }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3d { z5.d - z7.d }, p3/z, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3h { z0.h - z2.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3h { z0.h - z2.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3h { z21.h - z23.h }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3h { z23.h - z25.h }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3h { z5.h - z7.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3w { z0.s - z2.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3w { z0.s - z2.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3w { z21.s - z23.s }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3w { z23.s - z25.s }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3w { z5.s - z7.s }, p3/z, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4b { z0.b - z3.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4b { z0.b - z3.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4b { z21.b - z24.b }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4b { z23.b - z26.b }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4b { z5.b - z8.b }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4d { z0.d - z3.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4d { z0.d - z3.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4d { z21.d - z24.d }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4d { z23.d - z26.d }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4d { z5.d - z8.d }, p3/z, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4h { z0.h - z3.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4h { z0.h - z3.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4h { z21.h - z24.h }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4h { z23.h - z26.h }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4h { z5.h - z8.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4w { z0.s - z3.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4w { z0.s - z3.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4w { z21.s - z24.s }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4w { z23.s - z26.s }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4w { z5.s - z8.s }, p3/z, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z0.d }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z0.h }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z0.s }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.b }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.h }, p7/z, [sp] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1d { z0.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z23.d }, p3/z, [x13, z8.d, lsl #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1d { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z31.d }, p7/z, [z31.d, #248] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z0.d }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z0.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z0.s }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z31.h }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z0.d }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z0.h }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z0.s }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z31.h }, p7/z, [sp] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z0.d }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z0.s }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sw { z0.d }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sw { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z0.d }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z0.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z31.s }, p7/z, [z31.s, #124] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.b }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.b }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1d { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1d { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1d { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sw { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1sw { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1b { z0.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1b { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1b { z21.b }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1b { z23.b }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1d { z0.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1d { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1d { z21.d }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1d { z23.d }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1h { z0.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1h { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1h { z21.h }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1h { z23.h }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1w { z0.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1w { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1w { z21.s }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldnt1w { z23.s }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - ldr p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - ldr p5, [x10, #255, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - ldr p7, [x13, #-256, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldr z0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldr z23, [x13, #255, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - ldr z31, [sp, #-256, mul vl] -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.b, p0/m, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.b, p0/m, z0.b, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.b, z1.b, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.d, p0/m, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.h, p0/m, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.h, p0/m, z0.h, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.h, z1.h, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.s, p0/m, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.s, p0/m, z0.s, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z0.s, z1.s, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.b, p0/m, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.b, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.d, p0/m, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.d, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.h, p0/m, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.h, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.s, p0/m, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsl z31.s, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lslr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lslr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lslr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lslr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.b, p0/m, z0.b, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.b, z1.b, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.h, p0/m, z0.h, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.h, z1.h, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.s, p0/m, z0.s, z1.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z0.s, z1.s, z2.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsr z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsrr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsrr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsrr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - lsrr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - mad z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - mla z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - mls z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov p0.b, p0/m, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov p15.b, p15/m, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.b, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.b, b0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.b, p0/m, b0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.b, p0/m, w0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.b, p0/z, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z0.b, w0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #0xe0000000000003ff -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #0xffffffffffff7fff -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, d0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, p0/m, d0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.d, p0/m, x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z0.d, x0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #-256 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #32767 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, h0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, p0/m, h0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.h, p0/m, w0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.h, p0/z, #32512 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z0.h, w0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.q, q0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.s, #0xffff7fff -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.s, #32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.s, p0/m, s0 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.s, p0/m, w0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z0.s, s0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z0.s, w0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p15/m, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p15/m, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #32512 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p15/m, #-32768 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.b, p15/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.b, p7/m, b31 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - movprfx z31, z6 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.b, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z31.b, wsp -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.b, z31.b[63] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.d, p15/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.d, p7/m, d31 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - movprfx z31.d, p7/z, z6.d -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.d, p7/m, sp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z31.d, sp -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.d, z31.d[7] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.h, p15/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.h, p7/m, h31 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.h, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z31.h, wsp -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.h, z31.h[31] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.s, p15/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.s, p7/m, s31 -# CHECK-NEXT: - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.s, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - mov z31.s, wsp -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z31.s, z31.s[15] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, #-1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p0/z, #-1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.d, #-6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.h, #-6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.q, z17.q[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - mov z5.s, #-6 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - movs p0.b, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - movs p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - movs p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - movs p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - - - mrs x3, ID_AA64ZFR0_EL1 -# CHECK-NEXT: - - - - - - - - - - - - - - - mrs x3, ZCR_EL1 -# CHECK-NEXT: - - - - - - - - - - - - - - - mrs x3, ZCR_EL12 -# CHECK-NEXT: - - - - - - - - - - - - - - - mrs x3, ZCR_EL2 -# CHECK-NEXT: - - - - - - - - - - - - - - - mrs x3, ZCR_EL3 -# CHECK-NEXT: - - - - - - - - - - - - - - - msr ZCR_EL1, x3 -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - msb z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - - msr ZCR_EL12, x3 -# CHECK-NEXT: - - - - - - - - - - - - - - - msr ZCR_EL2, x3 -# CHECK-NEXT: - - - - - - - - - - - - - - - msr ZCR_EL3, x3 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z0.b, p7/m, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - mul z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z31.b, z31.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z31.b, z31.b, #127 -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - mul z31.d, z31.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - mul z31.d, z31.d, #127 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z31.h, z31.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z31.h, z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z31.s, z31.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - mul z31.s, z31.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - nand p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - nand p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - nands p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - nands p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z0.b, p0/m, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - neg z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - nor p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - nor p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - nors p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - nors p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - not p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - not p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - not z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - not z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - not z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - not z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - nots p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - nots p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - orn p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - orn p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - orns p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - orns p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - orr p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z0.d, z0.d, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z0.d, z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z0.s, z0.s, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z0.s, z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z23.h, z23.h, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z23.h, z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z5.b, z5.b, #0x6 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - orr z5.b, z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - orrs p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - orv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - orv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - orv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 2.00 - - orv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pfalse p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pfirst p0.b, p15, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pfirst p15.b, p15, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pnext p0.b, p15, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pnext p0.d, p15, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pnext p0.h, p15, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pnext p0.s, p15, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - pnext p15.b, p15, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptest p15, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptest p15, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p0.b, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p0.d, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p0.h, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p0.s, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p15.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #17 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #19 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #23 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #24 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #25 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #26 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #27 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, #28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, mul3 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, mul4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl128 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl256 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl3 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl5 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl7 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl8 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p0.b, pow2 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p0.d, pow2 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p0.h, pow2 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p0.s, pow2 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p15.d -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p15.h -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p15.s -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #14 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #15 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #16 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #17 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #18 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #19 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #20 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #21 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #22 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #23 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #24 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #25 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #26 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #27 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, #28 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, mul3 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, mul4 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl1 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl128 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl16 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl2 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl256 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl3 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl32 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl4 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl5 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl6 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl64 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl7 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - punpkhi p0.h, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - punpkhi p15.h, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - punpklo p0.h, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - punpklo p15.h, p15.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rbit z0.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rbit z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rbit z0.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rbit z0.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - rdffr p0.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - rdffr p0.b, p0/z -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - rdffr p15.b -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - rdffr p15.b, p15/z -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - rdffrs p0.b, p0/z -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - rdffrs p15.b, p15/z -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - rdvl x0, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - rdvl x21, #-32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - rdvl x23, #31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - rdvl xzr, #-1 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rev z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rev z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rev z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - rev z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - revb z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - revb z0.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - revb z0.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - revh z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - revh z0.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - revw z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sabd z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sabd z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sabd z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sabd z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.25 2.75 0.25 0.75 saddv d0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 saddv d0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 saddv d0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - scvtf z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 4.00 - - - scvtf z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - scvtf z0.h, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - scvtf z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - scvtf z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - sdiv z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - sdiv z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - sdivr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - sdivr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sdot z0.d, z1.h, z15.h[1] -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sdot z0.d, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sdot z0.s, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sdot z0.s, z1.b, z7.b[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sel z23.b, p11, z13.b, z8.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sel z23.d, p11, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sel z23.h, p11, z13.h, z8.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sel z23.s, p11, z13.s, z8.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - setffr -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z0.b, z0.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z0.d, z0.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z0.h, z0.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z0.s, z0.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.b, z31.b, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.d, z31.d, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.h, z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smax z31.s, z31.s, #127 -# CHECK-NEXT: - - - - - - - - - - - 1.25 2.75 0.25 0.75 smaxv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 smaxv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 smaxv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z0.b, z0.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z0.d, z0.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z0.h, z0.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z0.s, z0.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.b, z31.b, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.d, z31.d, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.h, z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smin z31.s, z31.s, #127 -# CHECK-NEXT: - - - - - - - - - - - 1.25 2.75 0.25 0.75 sminv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 sminv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 sminv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - smmla z0.s, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - smulh z0.b, p7/m, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - smulh z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - smulh z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - smulh z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - splice z31.b, p7, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - splice z31.d, p7, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - splice z31.h, p7, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - splice z31.s, p7, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqadd z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecb x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecd x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecd z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdech x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdech z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdech z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdech z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdech z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.b, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.d, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.h, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.s, wzr -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - sqdecp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - sqdecp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - sqdecp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqdecw x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecw z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqdecw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincb x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincd x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincd z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqinch x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqinch z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqinch z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqinch z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqinch z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp x0, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp x0, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp x0, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp x0, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.b, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.d, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.h, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.s, wzr -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - sqincp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - sqincp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - sqincp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - sqincw x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincw z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - sqincw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sqsub z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.b }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.h }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.s }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z0.s }, p0, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z0.s }, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z0.s }, p7, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.b }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.h }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.s }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.b }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.d }, p7, [z31.d, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.h }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.s }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z31.s }, p7, [z31.s, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z31.d }, p7, [z31.d, #248] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st1h { z0.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st1h { z0.s }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, sxtw #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, uxtw #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p7, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z21.h }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z21.s }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.d }, p7, [z31.d, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.h }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.s }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z31.s }, p7, [z31.s, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, sxtw #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, uxtw #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p7, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z21.s }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z31.d }, p7, [z31.d, #124] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z31.s }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z31.s }, p7, [z31.s, #124] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z0.b, z1.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z0.b, z1.b }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z21.b, z22.b }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z23.b, z24.b }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z5.b, z6.b }, p3, [x17, x16] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z0.d, z1.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z0.d, z1.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z21.d, z22.d }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z23.d, z24.d }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z5.d, z6.d }, p3, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st2h { z0.h, z1.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2h { z0.h, z1.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2h { z21.h, z22.h }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2h { z23.h, z24.h }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st2h { z5.h, z6.h }, p3, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z0.s, z1.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z0.s, z1.s }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z21.s, z22.s }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z23.s, z24.s }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z5.s, z6.s }, p3, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3b { z0.b - z2.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3b { z0.b - z2.b }, p0, [x0] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3b { z21.b - z23.b }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3b { z23.b - z25.b }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3b { z5.b - z7.b }, p3, [x17, x16] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3d { z0.d - z2.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3d { z0.d - z2.d }, p0, [x0] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3d { z21.d - z23.d }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3d { z23.d - z25.d }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3d { z5.d - z7.d }, p3, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3h { z0.h - z2.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3h { z0.h - z2.h }, p0, [x0] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3h { z21.h - z23.h }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3h { z23.h - z25.h }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3h { z5.h - z7.h }, p3, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3w { z0.s - z2.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3w { z0.s - z2.s }, p0, [x0] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3w { z21.s - z23.s }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3w { z23.s - z25.s }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3w { z5.s - z7.s }, p3, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4b { z0.b - z3.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4b { z0.b - z3.b }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4b { z21.b - z24.b }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4b { z23.b - z26.b }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4b { z5.b - z8.b }, p3, [x17, x16] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4d { z0.d - z3.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4d { z0.d - z3.d }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4d { z21.d - z24.d }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4d { z23.d - z26.d }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4d { z5.d - z8.d }, p3, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4h { z0.h - z3.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4h { z0.h - z3.h }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4h { z21.h - z24.h }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4h { z23.h - z26.h }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4h { z5.h - z8.h }, p3, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4w { z0.s - z3.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4w { z0.s - z3.s }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4w { z21.s - z24.s }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4w { z23.s - z26.s }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4w { z5.s - z8.s }, p3, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z21.b }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z23.b }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z21.d }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z23.d }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1h { z21.h }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1h { z23.h }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z21.s }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z23.s }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - str p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - str p15, [sp, #-256, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - str p5, [x10, #255, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 str z0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 str z21, [x10, #-256, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 str z31, [sp, #255, mul vl] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.b, p5/m, z21.b, z10.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.b, z10.b, z21.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.d, p5/m, z21.d, z10.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.d, z10.d, z21.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.h, p5/m, z21.h, z10.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.h, z10.h, z21.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.s, p5/m, z21.s, z10.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z21.s, z10.s, z21.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.b, p3/m, z23.b, z13.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.b, z13.b, z8.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.d, p3/m, z23.d, z13.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.h, p3/m, z23.h, z13.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.h, z13.h, z8.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.s, p3/m, z23.s, z13.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z23.s, z13.s, z8.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sub z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - subr z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot z0.s, z1.b, z7.b[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sunpkhi z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sunpkhi z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sunpkhi z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sunpklo z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sunpklo z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - sunpklo z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtb z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtb z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtb z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtb z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtb z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtb z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxth z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxth z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxth z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxth z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtw z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - sxtw z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - tbl z31.b, { z31.b }, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - tbl z31.d, { z31.d }, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - tbl z31.h, { z31.h }, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - tbl z31.s, { z31.s }, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn1 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn1 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn1 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn1 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn1 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn1 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn1 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn1 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn2 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn2 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn2 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - trn2 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn2 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn2 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn2 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - trn2 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uabd z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uabd z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uabd z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uabd z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.25 2.75 0.25 0.75 uaddv d0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 uaddv d0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 uaddv d0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - ucvtf z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 4.00 - - - ucvtf z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - ucvtf z0.h, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - ucvtf z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - ucvtf z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - udiv z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - udiv z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - udivr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 7.00 - - - udivr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - udot z0.d, z1.h, z15.h[1] -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - udot z0.d, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - udot z0.s, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - udot z0.s, z1.b, z7.b[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umax z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umax z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umax z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umax z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umax z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umax z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.25 2.75 0.25 0.75 umaxv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 umaxv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 umaxv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umin z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umin z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umin z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umin z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umin z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - umin z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 1.25 2.75 0.25 0.75 uminv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 uminv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.75 2.75 0.25 0.25 uminv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - ummla z0.s, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - umulh z0.b, p7/m, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 2.00 - - - umulh z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - umulh z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - umulh z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqadd z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecb x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecd x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecd z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdech x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdech z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdech z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdech z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdech z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.s -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - uqdecp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - uqdecp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - uqdecp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqdecw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecw z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqdecw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincb x0, vl1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincd x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincd z0.d -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqinch x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqinch z0.h -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqinch z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqinch z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqinch z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp x0, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp x0, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp x0, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincp x0, p0.s -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - uqincp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - uqincp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 2.00 - - - 0.50 0.50 - - uqincp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw w0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw x0, #14 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw x0, pow2 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uqincw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincw z0.s -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - 1.00 - - - uqincw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uqsub z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot z0.s, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot z0.s, z1.b, z7.b[3] -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - usmmla z0.s, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uunpkhi z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uunpkhi z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uunpkhi z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uunpklo z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uunpklo z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uunpklo z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtb z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtb z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtb z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtb z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtb z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtb z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxth z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxth z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxth z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxth z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtw z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - 1.00 - - uxtw z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp1 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp1 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp1 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp1 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp2 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp2 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp2 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - uzp2 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - whilele p0.b, w30, wzr -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - whilelo p15.d, xzr, x30 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - whilels p0.h, w30, wzr -# CHECK-NEXT: - - - - - - - 2.00 - - - - - - - whilelt p15.s, xzr, x30 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - wrffr p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - wrffr p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p0.b, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p0.d, p0.d, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p0.h, p0.h, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p0.s, p0.s, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip1 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip1 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p0.b, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p0.d, p0.d, p0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p0.h, p0.h, p0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p0.s, p0.s, p0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - zip2 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - 0.50 0.50 - - zip2 z31.s, z31.s, z31.s +# 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 - - abs z0.b, p0/m, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - abs z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z0.s, z1.s, z2.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.b, p5/m, z21.b, z10.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.b, z10.b, z21.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.d, p5/m, z21.d, z10.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.d, z10.d, z21.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.h, p5/m, z21.h, z10.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.h, z10.h, z21.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.s, p5/m, z21.s, z10.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z21.s, z10.s, z21.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.b, p3/m, z23.b, z13.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.b, z13.b, z8.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.d, p3/m, z23.d, z13.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.h, p3/m, z23.h, z13.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.h, z13.h, z8.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.s, p3/m, z23.s, z13.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z23.s, z13.s, z8.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - add z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addpl sp, sp, #31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addpl x0, x0, #-32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addpl x21, x21, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addpl x23, x8, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addvl sp, sp, #31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addvl x0, x0, #-32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addvl x21, x21, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - addvl x23, x8, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, lsl #1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, lsl #2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, lsl #3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.d, [z0.d, z0.d] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s, lsl #1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s, lsl #2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s, lsl #3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - adr z0.s, [z0.s, z0.s] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - and p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z0.d, z0.d, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z0.d, z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z0.s, z0.s, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z0.s, z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z23.h, z23.h, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z23.h, z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z5.b, z5.b, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - and z5.b, z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ands p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - andv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - andv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - andv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - andv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.b, p0/m, z0.b, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.b, z1.b, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.h, p0/m, z0.h, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.h, z1.h, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.s, p0/m, z0.s, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z0.s, z1.s, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asr z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrd z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - asrr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - bfcvt z0.h, p0/m, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - bfcvtnt z0.h, p0/m, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfdot z0.s, z1.h, z2.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfdot z0.s, z1.h, z2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalb z0.s, z1.h, z2.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalb z0.s, z1.h, z2.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalb z10.s, z21.h, z14.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalb z21.s, z14.h, z3.h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z2.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z2.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmlalt z14.s, z10.h, z21.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - bic p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - bic p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bic z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bic z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bic z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bic z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bic z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - bic z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - bics p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - bics p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brka p0.b, p15/m, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brka p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkas p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkb p0.b, p15/m, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkb p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkbs p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkn p0.b, p15/z, p1.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkn p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkns p0.b, p15/z, p1.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkns p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkpa p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkpa p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkpas p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkpas p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkpb p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - brkpb p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkpbs p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - brkpbs p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta b0, p7, b0, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta d0, p7, d0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta h0, p7, h0, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta s0, p7, s0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clasta w0, p7, w0, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clasta w0, p7, w0, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clasta w0, p7, w0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clasta x0, p7, x0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta z0.b, p7, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta z0.d, p7, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta z0.h, p7, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clasta z0.s, p7, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb b0, p7, b0, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb d0, p7, d0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb h0, p7, h0, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb s0, p7, s0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clastb w0, p7, w0, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clastb w0, p7, w0, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clastb w0, p7, w0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - clastb x0, p7, x0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb z0.b, p7, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb z0.d, p7, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb z0.h, p7, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - clastb z0.s, p7, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cls z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cls z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cls z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cls z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - clz z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - clz z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - clz z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - clz z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpge p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpgt p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphi p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmphs p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmple p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnot z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnot z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnot z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnot z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnt z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnt z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnt z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - cnt z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntb x0, #28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntd x0, #28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cnth x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cnth x0, #28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cnth x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cnth x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntp x0, p15, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntw x0, #28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - cntw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - compact z31.d, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - compact z31.s, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.b, p7/m, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.d, p7/m, sp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.h, p7/m, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.s, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermeq w30, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermeq wzr, w30 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermeq x30, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermeq xzr, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermne w30, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermne wzr, w30 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermne x30, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ctermne xzr, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dech x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dech x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dech x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dech x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - dech x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp xzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp xzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp xzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decp xzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - decp z31.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - decp z31.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - decp z31.s, p15.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - decw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #256 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.s, #512 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z0.b, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z0.d, x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z31.h, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z31.s, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - dupm z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - dupm z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - dupm z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - dupm z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - eor p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z0.d, z0.d, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z0.d, z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z0.s, z0.s, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z0.s, z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z23.h, z23.h, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z23.h, z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z5.b, z5.b, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - eor z5.b, z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - eors p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - eorv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - eorv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - eorv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - eorv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ext z31.b, z31.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ext z31.b, z31.b, z0.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fabd z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fabd z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fabd z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fabs z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fabs z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fabs z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fadd z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.50 1.50 - - fadda d0, p7, d0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 18.00 - - - fadda h0, p7, h0, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 10.00 - - - fadda s0, p7, s0, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.25 2.25 0.25 0.25 faddv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.00 3.00 - - faddv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.75 2.75 0.25 0.25 faddv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcadd z0.d, p0/m, z0.d, z0.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcadd z0.h, p0/m, z0.h, z0.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcadd z0.s, p0/m, z0.s, z0.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcadd z31.d, p7/m, z31.d, z31.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcadd z31.h, p7/m, z31.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcadd z31.s, p7/m, z31.s, z31.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.d, p0/m, z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.h, p0/m, z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.h, p0/m, z1.h, z2.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.h, z0.h, z0.h[0], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.s, p0/m, z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z0.s, p0/m, z1.s, z2.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z21.s, z10.s, z5.s[1], #90 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z23.s, z13.s, z8.s[0], #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z29.d, p7/m, z30.d, z31.d, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z29.h, p7/m, z30.h, z31.h, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z29.s, p7/m, z30.s, z31.s, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z31.d, p7/m, z31.d, z31.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z31.h, p7/m, z31.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z31.h, z31.h, z7.h[3], #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fcmla z31.s, p7/m, z31.s, z31.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmle p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmle p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmle p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmlt p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmlt p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmlt p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmuo p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmuo p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcmuo p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvt z0.d, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvt z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvt z0.h, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - fcvt z0.h, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvt z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - fcvt z0.s, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs z0.d, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - - - fcvtzs z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzs z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - fcvtzs z0.s, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - fcvtzs z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu z0.d, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - - - fcvtzu z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - fcvtzu z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - fcvtzu z0.s, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - fcvtzu z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - fdiv z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 10.00 - - - fdiv z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - fdiv z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - fdivr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 10.00 - - - fdivr z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - fdivr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fexpa z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fexpa z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fexpa z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmad z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmad z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmad z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmax z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmaxnm z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 2.25 2.25 0.25 0.25 fmaxnmv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.00 3.00 - - fmaxnmv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.75 2.75 0.25 0.25 fmaxnmv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.25 2.25 0.25 0.25 fmaxv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.00 3.00 - - fmaxv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.75 2.75 0.25 0.25 fmaxv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmin z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fminnm z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 2.25 2.25 0.25 0.25 fminnmv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.00 3.00 - - fminnmv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.75 2.75 0.25 0.25 fminnmv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.25 2.25 0.25 0.25 fminv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 3.00 3.00 - - fminv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.75 2.75 0.25 0.25 fminv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmla z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmla z0.d, z1.d, z7.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmla z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmla z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmla z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmla z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmls z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmls z0.d, z1.d, z7.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmls z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmls z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmls z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmls z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, #-10.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, #0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, p0/m, #-10.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.d, p0/m, #0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.h, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.h, p0/m, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.s, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmov z0.s, p0/m, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmsb z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmsb z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmsb z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, z0.d, z0.d[0] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, z0.h, z0.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, z0.s, z0.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z31.d, p7/m, z31.d, #2.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z31.d, z31.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z31.h, p7/m, z31.h, #2.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z31.h, z31.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z31.s, p7/m, z31.s, #2.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmul z31.s, z31.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmulx z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmulx z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fmulx z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fneg z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fneg z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fneg z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmad z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmad z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmad z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmla z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmla z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmla z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmls z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmls z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmls z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmsb z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmsb z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fnmsb z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frecpe z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - - - frecpe z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - frecpe z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - frecps z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - frecps z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - frecps z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frecpx z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frecpx z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frecpx z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frinta z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frinta z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frinta z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frinti z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frinti z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frinti z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintm z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintm z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintm z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintn z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintn z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintn z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintp z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintp z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintp z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintx z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintx z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintx z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintz z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintz z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frintz z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - frsqrte z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - - - frsqrte z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - frsqrte z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - frsqrts z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - frsqrts z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - frsqrts z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fscale z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fscale z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fscale z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - fsqrt z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 10.00 - - - fsqrt z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - fsqrt z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsub z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - fsubr z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftmad z0.d, z0.d, z31.d, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftmad z0.h, z0.h, z31.h, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftmad z0.s, z0.s, z31.s, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftsmul z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftsmul z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftsmul z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftssel z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftssel z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ftssel z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - incd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - incd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - inch x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - inch x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - inch x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - inch x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - inch x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - inch z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - inch z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp xzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp xzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp xzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incp xzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - incp z31.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - incp z31.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - incp z31.s, p15.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - incw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - incw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - incw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - index z0.b, #0, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - index z0.d, #0, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - index z0.h, #0, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z0.h, w0, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - index z0.s, #0, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z21.b, w10, w21 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 2.00 - - - index z21.d, x10, x21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z21.s, w10, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z23.b, #13, w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z23.b, w13, #8 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 2.00 - - - index z23.d, #13, x8 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 2.00 - - - index z23.d, x13, #8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z23.h, #13, w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z23.h, w13, #8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z23.s, #13, w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z23.s, w13, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - index z31.b, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.b, #-1, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.b, wzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.b, wzr, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - index z31.d, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 2.00 - - - index z31.d, #-1, xzr +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 2.00 - - - index z31.d, xzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 2.00 - - - index z31.d, xzr, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - index z31.h, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.h, #-1, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.h, wzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.h, wzr, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - index z31.s, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.s, #-1, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.s, wzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - index z31.s, wzr, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z0.b, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z0.d, x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z0.h, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z0.s, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - insr z31.b, b31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z31.b, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - insr z31.d, d31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z31.d, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - insr z31.h, h31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z31.h, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - insr z31.s, s31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - insr z31.s, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lasta b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lasta d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lasta h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lasta s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lasta w0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lasta w0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lasta w0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lasta x0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lastb b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lastb d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lastb h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lastb s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lastb w0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lastb w0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lastb w0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - 1.00 - - lastb x0, p7, z31.d +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.b }, p0/z, [sp, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.b }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z21.s }, p5/z, [x10, x21] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z23.d }, p3/z, [x13, x8] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.b }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1b { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1b { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1b { z5.h }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1d { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1d { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1d { z23.d }, p3/z, [sp, x8, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1d { z23.d }, p3/z, [x13, x8, lsl #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z23.d }, p3/z, [x13, z8.d, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1d { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1d { z31.d }, p7/z, [z31.d, #248] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z21.s }, p5/z, [x10, x21, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z23.d }, p3/z, [x13, x8, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1h { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1h { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z5.h }, p3/z, [sp, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1h { z5.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.b }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.d }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.h }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rb { z31.s }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rd { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rd { z31.d }, p7/z, [sp, #504] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rh { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rh { z31.d }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rh { z31.h }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rh { z31.s }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z0.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z21.b }, p5/z, [x10, #112] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z23.b }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqb { z31.b }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z0.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #112] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqd { z31.d }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1rqh { z0.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #112] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqh { z31.h }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z0.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #112] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rqw { z31.s }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z31.d }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z31.h }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsb { z31.s }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z31.d }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsh { z31.s }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rsw { z31.d }, p7/z, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rw { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rw { z31.d }, p7/z, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1rw { z31.s }, p7/z, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.h }, p0/z, [sp, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.h }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sb { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sb { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z21.s }, p5/z, [x10, x21] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z23.d }, p3/z, [x13, x8] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sb { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sb { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sb { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sh { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1sh { z21.s }, p5/z, [sp, x21, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sh { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1sh { z21.s }, p5/z, [x10, x21, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ld1sh { z23.d }, p3/z, [x13, x8, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sh { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sh { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1sh { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sw { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sw { z23.d }, p3/z, [sp, x8, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sw { z23.d }, p3/z, [x13, x8, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1sw { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1sw { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.s }, p5/z, [sp, x21, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z21.s }, p5/z, [x10, x21, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z23.d }, p3/z, [x13, x8, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ld1w { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ld1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ld1w { z31.s }, p7/z, [z31.s, #124] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z0.b, z1.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z0.b, z1.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z21.b, z22.b }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z23.b, z24.b }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2b { z5.b, z6.b }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z0.d, z1.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z0.d, z1.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z21.d, z22.d }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z23.d, z24.d }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2d { z5.d, z6.d }, p3/z, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z0.h, z1.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z0.h, z1.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z21.h, z22.h }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z23.h, z24.h }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2h { z5.h, z6.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z0.s, z1.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z0.s, z1.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z21.s, z22.s }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z23.s, z24.s }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 1.00 1.00 - - ld2w { z5.s, z6.s }, p3/z, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3b { z0.b - z2.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3b { z0.b - z2.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3b { z21.b - z23.b }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3b { z23.b - z25.b }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3b { z5.b - z7.b }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3d { z0.d - z2.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3d { z0.d - z2.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3d { z21.d - z23.d }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3d { z23.d - z25.d }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3d { z5.d - z7.d }, p3/z, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3h { z0.h - z2.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3h { z0.h - z2.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3h { z21.h - z23.h }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3h { z23.h - z25.h }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3h { z5.h - z7.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3w { z0.s - z2.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3w { z0.s - z2.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3w { z21.s - z23.s }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - - - 1.50 1.50 - - ld3w { z23.s - z25.s }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 1.50 1.50 - - 0.50 0.50 1.50 1.50 - - ld3w { z5.s - z7.s }, p3/z, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4b { z0.b - z3.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4b { z0.b - z3.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4b { z21.b - z24.b }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4b { z23.b - z26.b }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4b { z5.b - z8.b }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4d { z0.d - z3.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4d { z0.d - z3.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4d { z21.d - z24.d }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4d { z23.d - z26.d }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4d { z5.d - z8.d }, p3/z, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4h { z0.h - z3.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4h { z0.h - z3.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4h { z21.h - z24.h }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4h { z23.h - z26.h }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4h { z5.h - z8.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4w { z0.s - z3.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4w { z0.s - z3.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4w { z21.s - z24.s }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - 2.00 2.00 - - ld4w { z23.s - z26.s }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - 1.00 1.00 2.00 2.00 - - ld4w { z5.s - z8.s }, p3/z, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z0.d }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z0.h }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z0.s }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.b }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1b { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.h }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1b { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1b { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1d { z0.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z23.d }, p3/z, [x13, z8.d, lsl #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1d { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1d { z31.d }, p7/z, [z31.d, #248] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z0.d }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z0.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z0.s }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z31.h }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1h { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1h { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z0.d }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z0.h }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z0.s }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sb { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z31.h }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sb { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sb { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z0.d }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z0.s }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sh { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1sh { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sw { z0.d }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1sw { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1sw { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z0.d }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z0.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldff1w { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - 0.25 0.25 0.25 0.25 ldff1w { z31.s }, p7/z, [z31.s, #124] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.b }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.b }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1b { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1d { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1d { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1d { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1h { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sb { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sh { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sw { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1sw { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnf1w { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1b { z0.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1b { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1b { z21.b }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1b { z23.b }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1d { z0.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1d { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1d { z21.d }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1d { z23.d }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1h { z0.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1h { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1h { z21.h }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1h { z23.h }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 - - - - ldnt1w { z0.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1w { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1w { z21.s }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldnt1w { z23.s }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - ldr p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - ldr p5, [x10, #255, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - ldr p7, [x13, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldr z0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldr z23, [x13, #255, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - ldr z31, [sp, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.b, p0/m, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.b, p0/m, z0.b, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.b, z1.b, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.d, p0/m, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.h, p0/m, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.h, p0/m, z0.h, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.h, z1.h, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.s, p0/m, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.s, p0/m, z0.s, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z0.s, z1.s, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.b, p0/m, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.b, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.d, p0/m, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.d, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.h, p0/m, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.h, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.s, p0/m, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsl z31.s, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lslr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lslr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lslr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lslr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.b, p0/m, z0.b, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.b, z1.b, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.h, p0/m, z0.h, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.h, z1.h, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.s, p0/m, z0.s, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z0.s, z1.s, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsr z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsrr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsrr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsrr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - lsrr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - mad z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - mla z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - mls z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov p0.b, p0/m, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov p15.b, p15/m, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.b, b0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.b, p0/m, b0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.b, p0/m, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.b, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z0.b, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #0xe0000000000003ff +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #0xffffffffffff7fff +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, #32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, p0/m, d0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.d, p0/m, x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z0.d, x0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #-256 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, #32767 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, p0/m, h0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.h, p0/m, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.h, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z0.h, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.q, q0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.s, #0xffff7fff +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.s, #32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.s, p0/m, s0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z0.s, p0/m, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z0.s, s0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z0.s, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.d, p15/m, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.h, p15/m, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z21.s, p15/m, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.b, p15/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.b, p7/m, b31 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - movprfx z31, z6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.b, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z31.b, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.b, z31.b[63] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.d, p15/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.d, p7/m, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - movprfx z31.d, p7/z, z6.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.d, p7/m, sp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z31.d, sp +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.d, z31.d[7] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.h, p15/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.h, p7/m, h31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.h, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z31.h, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.h, z31.h[31] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.s, p15/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.s, p7/m, s31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - 0.50 0.50 - - mov z31.s, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - mov z31.s, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z31.s, z31.s[15] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p0/z, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.b, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.d, #-6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.h, #-6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.q, z17.q[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - mov z5.s, #-6 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - movs p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - movs p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - movs p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - movs p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - mrs x3, ID_AA64ZFR0_EL1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - msr ZCR_EL1, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - msb z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - msr ZCR_EL12, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - msr ZCR_EL2, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - msr ZCR_EL3, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z0.b, p7/m, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - mul z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z31.b, z31.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z31.b, z31.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - mul z31.d, z31.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - mul z31.d, z31.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z31.h, z31.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z31.h, z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z31.s, z31.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - mul z31.s, z31.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - nand p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - nand p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - nands p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - nands p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z0.b, p0/m, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - neg z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - nor p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - nor p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - nors p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - nors p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - not p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - not p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - not z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - not z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - not z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - not z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - nots p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - nots p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - orn p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - orn p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - orns p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - orns p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - orr p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z0.d, z0.d, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z0.d, z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z0.s, z0.s, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z0.s, z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z23.h, z23.h, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z23.h, z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z5.b, z5.b, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - orr z5.b, z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - orrs p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - orv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - orv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - orv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 2.00 - - orv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pfalse p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pfirst p0.b, p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pfirst p15.b, p15, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pnext p0.b, p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pnext p0.d, p15, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pnext p0.h, p15, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pnext p0.s, p15, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - pnext p15.b, p15, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptest p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptest p15, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p0.b, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p15.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #17 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #19 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #23 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #24 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #25 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #26 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #27 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, #28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, mul3 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, mul4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl128 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl256 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl3 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl5 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl7 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - ptrue p7.s, vl8 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p0.b, pow2 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p15.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p15.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p15.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #14 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #15 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #16 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #17 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #18 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #19 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #20 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #21 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #22 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #23 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #24 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #25 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #26 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #27 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, #28 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, mul3 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, mul4 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl1 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl128 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl16 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl2 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl256 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl3 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl32 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl4 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl5 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl6 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl64 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl7 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - ptrues p7.s, vl8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - punpkhi p0.h, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - punpkhi p15.h, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - punpklo p0.h, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - punpklo p15.h, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rbit z0.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rbit z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rbit z0.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rbit z0.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - rdffr p0.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - rdffr p0.b, p0/z +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - rdffr p15.b +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - rdffr p15.b, p15/z +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - rdffrs p0.b, p0/z +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - rdffrs p15.b, p15/z +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - rdvl x0, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - rdvl x21, #-32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - rdvl x23, #31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - rdvl xzr, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rev z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rev z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rev z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - rev z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - revb z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - revb z0.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - revb z0.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - revh z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - revh z0.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - revw z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sabd z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sabd z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sabd z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sabd z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.25 2.75 0.25 0.75 saddv d0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 saddv d0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 saddv d0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - scvtf z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - - - scvtf z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - scvtf z0.h, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - scvtf z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - scvtf z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - sdiv z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - sdiv z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - sdivr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - sdivr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sdot z0.d, z1.h, z15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sdot z0.d, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sdot z0.s, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sdot z0.s, z1.b, z7.b[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sel z23.b, p11, z13.b, z8.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sel z23.d, p11, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sel z23.h, p11, z13.h, z8.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sel z23.s, p11, z13.s, z8.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - setffr +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z0.b, z0.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z0.d, z0.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z0.h, z0.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z0.s, z0.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.b, z31.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.d, z31.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.h, z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smax z31.s, z31.s, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.25 2.75 0.25 0.75 smaxv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 smaxv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 smaxv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z0.b, z0.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z0.d, z0.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z0.h, z0.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z0.s, z0.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.b, z31.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.d, z31.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.h, z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smin z31.s, z31.s, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.25 2.75 0.25 0.75 sminv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 sminv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 sminv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - smmla z0.s, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - smulh z0.b, p7/m, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - smulh z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - smulh z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - smulh z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - splice z31.b, p7, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - splice z31.d, p7, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - splice z31.h, p7, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - splice z31.s, p7, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqadd z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecb x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecd x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdech x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdech z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdech z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdech z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdech z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.b, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.d, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.h, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecp xzr, p15.s, wzr +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - sqdecp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - sqdecp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - sqdecp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqdecw x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqdecw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincb x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincd x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqinch x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqinch z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqinch z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqinch z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqinch z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.b, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.d, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.h, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincp xzr, p15.s, wzr +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - sqincp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - sqincp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - sqincp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - sqincw x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - sqincw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sqsub z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.h }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.s }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z0.s }, p0, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z0.s }, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z0.s }, p7, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.b }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.h }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z21.s }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.b }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.d }, p7, [z31.d, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.h }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1b { z31.s }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1b { z31.s }, p7, [z31.s, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1d { z31.d }, p7, [z31.d, #248] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st1h { z0.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st1h { z0.s }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, sxtw #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, uxtw #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z0.s }, p7, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z21.h }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z21.s }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.d }, p7, [z31.d, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.h }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1h { z31.s }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1h { z31.s }, p7, [z31.s, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, sxtw #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, uxtw #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z0.s }, p7, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z21.s }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z31.d }, p7, [z31.d, #124] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st1w { z31.s }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - 0.50 0.50 0.50 0.50 st1w { z31.s }, p7, [z31.s, #124] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z0.b, z1.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z0.b, z1.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z21.b, z22.b }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z23.b, z24.b }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2b { z5.b, z6.b }, p3, [x17, x16] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z0.d, z1.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z0.d, z1.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z21.d, z22.d }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z23.d, z24.d }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2d { z5.d, z6.d }, p3, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st2h { z0.h, z1.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2h { z0.h, z1.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2h { z21.h, z22.h }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2h { z23.h, z24.h }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 st2h { z5.h, z6.h }, p3, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z0.s, z1.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z0.s, z1.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z21.s, z22.s }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z23.s, z24.s }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 st2w { z5.s, z6.s }, p3, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3b { z0.b - z2.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3b { z0.b - z2.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3b { z21.b - z23.b }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3b { z23.b - z25.b }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3b { z5.b - z7.b }, p3, [x17, x16] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3d { z0.d - z2.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3d { z0.d - z2.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3d { z21.d - z23.d }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3d { z23.d - z25.d }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3d { z5.d - z7.d }, p3, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3h { z0.h - z2.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3h { z0.h - z2.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3h { z21.h - z23.h }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3h { z23.h - z25.h }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3h { z5.h - z7.h }, p3, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3w { z0.s - z2.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3w { z0.s - z2.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3w { z21.s - z23.s }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - - - 1.25 1.25 1.25 1.25 st3w { z23.s - z25.s }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 2.50 2.50 - - 2.50 2.50 1.25 1.25 1.25 1.25 st3w { z5.s - z7.s }, p3, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4b { z0.b - z3.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4b { z0.b - z3.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4b { z21.b - z24.b }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4b { z23.b - z26.b }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4b { z5.b - z8.b }, p3, [x17, x16] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4d { z0.d - z3.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4d { z0.d - z3.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4d { z21.d - z24.d }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4d { z23.d - z26.d }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4d { z5.d - z8.d }, p3, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4h { z0.h - z3.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4h { z0.h - z3.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4h { z21.h - z24.h }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4h { z23.h - z26.h }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4h { z5.h - z8.h }, p3, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4w { z0.s - z3.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4w { z0.s - z3.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4w { z21.s - z24.s }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - 2.25 2.25 2.25 2.25 st4w { z23.s - z26.s }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 4.50 4.50 2.25 2.25 2.25 2.25 st4w { z5.s - z8.s }, p3, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z21.b }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1b { z23.b }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z21.d }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1d { z23.d }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.50 0.50 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1h { z21.h }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1h { z23.h }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z21.s }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 stnt1w { z23.s }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - str p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - str p15, [sp, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - str p5, [x10, #255, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 str z0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 str z21, [x10, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.25 0.25 0.25 0.25 str z31, [sp, #255, mul vl] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.b, p5/m, z21.b, z10.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.b, z10.b, z21.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.d, p5/m, z21.d, z10.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.d, z10.d, z21.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.h, p5/m, z21.h, z10.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.h, z10.h, z21.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.s, p5/m, z21.s, z10.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z21.s, z10.s, z21.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.b, p3/m, z23.b, z13.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.b, z13.b, z8.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.d, p3/m, z23.d, z13.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.h, p3/m, z23.h, z13.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.h, z13.h, z8.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.s, p3/m, z23.s, z13.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z23.s, z13.s, z8.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sub z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - subr z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sudot z0.s, z1.b, z7.b[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sunpkhi z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sunpkhi z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sunpkhi z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sunpklo z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sunpklo z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - sunpklo z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtb z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtb z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtb z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtb z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtb z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtb z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxth z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxth z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxth z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxth z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtw z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - sxtw z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl z31.b, { z31.b }, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl z31.d, { z31.d }, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl z31.h, { z31.h }, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - tbl z31.s, { z31.s }, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn1 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn1 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn1 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn1 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn1 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn1 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn1 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn1 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn2 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn2 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn2 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - trn2 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn2 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn2 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn2 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - trn2 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uabd z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uabd z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uabd z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uabd z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.25 2.75 0.25 0.75 uaddv d0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 uaddv d0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 uaddv d0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - ucvtf z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 4.00 - - - ucvtf z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - ucvtf z0.h, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - ucvtf z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - ucvtf z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - udiv z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - udiv z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - udivr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 7.00 - - - udivr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - udot z0.d, z1.h, z15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - udot z0.d, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - udot z0.s, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - udot z0.s, z1.b, z7.b[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umax z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umax z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umax z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umax z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umax z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umax z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.25 2.75 0.25 0.75 umaxv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 umaxv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 umaxv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umin z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umin z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umin z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umin z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umin z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - umin z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.25 2.75 0.25 0.75 uminv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 uminv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.75 2.75 0.25 0.25 uminv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - ummla z0.s, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - umulh z0.b, p7/m, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - - umulh z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - umulh z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - umulh z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqadd z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdech x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdech z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdech z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdech z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdech z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp wzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - uqdecp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - uqdecp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - uqdecp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqdecw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqdecw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqinch x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqinch z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqinch z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqinch z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqinch z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp wzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - uqincp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - uqincp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - 0.50 0.50 - - uqincp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uqincw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - - uqincw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uqsub z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot z0.s, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usdot z0.s, z1.b, z7.b[3] +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - usmmla z0.s, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uunpkhi z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uunpkhi z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uunpkhi z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uunpklo z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uunpklo z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uunpklo z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtb z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtb z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtb z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtb z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtb z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtb z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxth z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxth z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxth z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxth z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtw z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - 1.00 - - uxtw z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp1 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp1 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp1 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp1 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp1 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp2 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp2 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp2 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - uzp2 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - uzp2 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - whilele p0.b, w30, wzr +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - whilelo p15.d, xzr, x30 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - whilels p0.h, w30, wzr +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - - - whilelt p15.s, xzr, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - wrffr p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - wrffr p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p0.b, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p0.d, p0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p0.h, p0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p0.s, p0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip1 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip1 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p0.b, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p0.d, p0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p0.h, p0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p0.s, p0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - zip2 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 0.50 - - zip2 z31.s, z31.s, z31.s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s index 071329fd00cdd..8b1c8a4e4ca55 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-zero-dependency.s @@ -12,7 +12,7 @@ cmp x0, #4 # CHECK: Dispatch Width: 15 # CHECK-NEXT: uOps Per Cycle: 3.70 # CHECK-NEXT: IPC: 3.70 -# CHECK-NEXT: Block RThroughput: 0.3 +# CHECK-NEXT: Block RThroughput: 0.5 # CHECK: Instruction Info: # CHECK-NEXT: [1]: #uOps @@ -31,26 +31,29 @@ cmp x0, #4 # CHECK-NEXT: [0.1] - V1UnitB # CHECK-NEXT: [1.0] - V1UnitD # CHECK-NEXT: [1.1] - V1UnitD -# CHECK-NEXT: [2] - V1UnitL2 -# CHECK-NEXT: [3.0] - V1UnitL01 -# CHECK-NEXT: [3.1] - V1UnitL01 -# CHECK-NEXT: [4] - V1UnitM0 -# CHECK-NEXT: [5] - V1UnitM1 -# CHECK-NEXT: [6.0] - V1UnitS -# CHECK-NEXT: [6.1] - V1UnitS -# CHECK-NEXT: [7] - V1UnitV0 -# CHECK-NEXT: [8] - V1UnitV1 -# CHECK-NEXT: [9] - V1UnitV2 -# CHECK-NEXT: [10] - V1UnitV3 +# 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] [3.0] [3.1] [4] [5] [6.0] [6.1] [7] [8] [9] [10] -# CHECK-NEXT: - - - - - - - 0.50 0.50 0.50 0.50 - - - - +# 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: - - - - 0.33 0.33 0.34 - - - 0.50 0.50 0.50 0.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] [9] [10] Instructions: -# CHECK-NEXT: - - - - - - - 0.48 0.50 0.01 0.01 - - - - mov x0, x1 -# CHECK-NEXT: - - - - - - - 0.02 - 0.49 0.49 - - - - cmp x0, #4 +# 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.49 0.49 0.01 0.01 - - - - mov x0, x1 +# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - 0.01 0.01 0.49 0.49 - - - - cmp x0, #4 # CHECK: Timeline view: # CHECK-NEXT: Index 012345 diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-basic-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-basic-instructions.s index 9a3bcac69582a..581dad6b68dcf 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-basic-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-basic-instructions.s @@ -1406,16 +1406,16 @@ drps # CHECK-NEXT: 1 1 0.17 sub w4, w20, #546, lsl #12 # CHECK-NEXT: 1 1 0.17 sub sp, sp, #288 # CHECK-NEXT: 1 1 0.17 sub wsp, w19, #16 -# CHECK-NEXT: 1 1 0.25 adds w13, w23, #291, lsl #12 -# CHECK-NEXT: 1 1 0.25 cmn w2, #4095 -# CHECK-NEXT: 1 1 0.25 adds w20, wsp, #0 -# CHECK-NEXT: 1 1 0.25 cmn x3, #1, lsl #12 -# CHECK-NEXT: 1 1 0.25 cmp sp, #20, lsl #12 -# CHECK-NEXT: 1 1 0.25 cmp x30, #4095 -# CHECK-NEXT: 1 1 0.25 subs x4, sp, #3822 -# CHECK-NEXT: 1 1 0.25 cmn w3, #291, lsl #12 -# CHECK-NEXT: 1 1 0.25 cmn wsp, #1365 -# CHECK-NEXT: 1 1 0.25 cmn sp, #1092, lsl #12 +# CHECK-NEXT: 1 1 0.33 adds w13, w23, #291, lsl #12 +# CHECK-NEXT: 1 1 0.33 cmn w2, #4095 +# CHECK-NEXT: 1 1 0.33 adds w20, wsp, #0 +# CHECK-NEXT: 1 1 0.33 cmn x3, #1, lsl #12 +# CHECK-NEXT: 1 1 0.33 cmp sp, #20, lsl #12 +# CHECK-NEXT: 1 1 0.33 cmp x30, #4095 +# CHECK-NEXT: 1 1 0.33 subs x4, sp, #3822 +# CHECK-NEXT: 1 1 0.33 cmn w3, #291, lsl #12 +# CHECK-NEXT: 1 1 0.33 cmn wsp, #1365 +# CHECK-NEXT: 1 1 0.33 cmn sp, #1092, lsl #12 # CHECK-NEXT: 1 1 0.17 mov sp, x30 # CHECK-NEXT: 1 1 0.17 mov wsp, w20 # CHECK-NEXT: 1 1 0.17 mov x11, sp @@ -1446,11 +1446,11 @@ drps # CHECK-NEXT: 1 2 0.50 add x2, x3, x4, asr #0 # CHECK-NEXT: 1 2 0.50 add x5, x6, x7, asr #21 # CHECK-NEXT: 1 2 0.50 add x8, x9, x10, asr #63 -# CHECK-NEXT: 1 1 0.25 adds w3, w5, w7 -# CHECK-NEXT: 1 1 0.25 cmn w3, w5 -# CHECK-NEXT: 1 1 0.25 adds w20, wzr, w4 -# CHECK-NEXT: 1 1 0.25 adds w4, w6, wzr -# CHECK-NEXT: 1 1 0.25 adds w11, w13, w15 +# CHECK-NEXT: 1 1 0.33 adds w3, w5, w7 +# CHECK-NEXT: 1 1 0.33 cmn w3, w5 +# CHECK-NEXT: 1 1 0.33 adds w20, wzr, w4 +# CHECK-NEXT: 1 1 0.33 adds w4, w6, wzr +# CHECK-NEXT: 1 1 0.33 adds w11, w13, w15 # CHECK-NEXT: 1 2 0.50 adds w9, w3, wzr, lsl #10 # CHECK-NEXT: 1 2 0.50 adds w17, w29, w20, lsl #31 # CHECK-NEXT: 1 2 0.50 adds w21, w22, w23, lsr #0 @@ -1459,11 +1459,11 @@ drps # CHECK-NEXT: 1 2 0.50 adds w2, w3, w4, asr #0 # CHECK-NEXT: 1 2 0.50 adds w5, w6, w7, asr #21 # CHECK-NEXT: 1 2 0.50 adds w8, w9, w10, asr #31 -# CHECK-NEXT: 1 1 0.25 adds x3, x5, x7 -# CHECK-NEXT: 1 1 0.25 cmn x3, x5 -# CHECK-NEXT: 1 1 0.25 adds x20, xzr, x4 -# CHECK-NEXT: 1 1 0.25 adds x4, x6, xzr -# CHECK-NEXT: 1 1 0.25 adds x11, x13, x15 +# CHECK-NEXT: 1 1 0.33 adds x3, x5, x7 +# CHECK-NEXT: 1 1 0.33 cmn x3, x5 +# CHECK-NEXT: 1 1 0.33 adds x20, xzr, x4 +# CHECK-NEXT: 1 1 0.33 adds x4, x6, xzr +# CHECK-NEXT: 1 1 0.33 adds x11, x13, x15 # CHECK-NEXT: 1 2 0.50 adds x9, x3, xzr, lsl #10 # CHECK-NEXT: 1 2 0.50 adds x17, x29, x20, lsl #63 # CHECK-NEXT: 1 2 0.50 adds x21, x22, x23, lsr #0 @@ -1496,10 +1496,10 @@ drps # CHECK-NEXT: 1 2 0.50 sub x2, x3, x4, asr #0 # CHECK-NEXT: 1 2 0.50 sub x5, x6, x7, asr #21 # CHECK-NEXT: 1 2 0.50 sub x8, x9, x10, asr #63 -# CHECK-NEXT: 1 1 0.25 subs w3, w5, w7 -# CHECK-NEXT: 1 1 0.25 cmp w3, w5 -# CHECK-NEXT: 1 1 0.25 subs w4, w6, wzr -# CHECK-NEXT: 1 1 0.25 subs w11, w13, w15 +# CHECK-NEXT: 1 1 0.33 subs w3, w5, w7 +# CHECK-NEXT: 1 1 0.33 cmp w3, w5 +# CHECK-NEXT: 1 1 0.33 subs w4, w6, wzr +# CHECK-NEXT: 1 1 0.33 subs w11, w13, w15 # CHECK-NEXT: 1 2 0.50 subs w9, w3, wzr, lsl #10 # CHECK-NEXT: 1 2 0.50 subs w17, w29, w20, lsl #31 # CHECK-NEXT: 1 2 0.50 subs w21, w22, w23, lsr #0 @@ -1508,10 +1508,10 @@ drps # CHECK-NEXT: 1 2 0.50 subs w2, w3, w4, asr #0 # CHECK-NEXT: 1 2 0.50 subs w5, w6, w7, asr #21 # CHECK-NEXT: 1 2 0.50 subs w8, w9, w10, asr #31 -# CHECK-NEXT: 1 1 0.25 subs x3, x5, x7 -# CHECK-NEXT: 1 1 0.25 cmp x3, x5 -# CHECK-NEXT: 1 1 0.25 subs x4, x6, xzr -# CHECK-NEXT: 1 1 0.25 subs x11, x13, x15 +# CHECK-NEXT: 1 1 0.33 subs x3, x5, x7 +# CHECK-NEXT: 1 1 0.33 cmp x3, x5 +# CHECK-NEXT: 1 1 0.33 subs x4, x6, xzr +# CHECK-NEXT: 1 1 0.33 subs x11, x13, x15 # CHECK-NEXT: 1 2 0.50 subs x9, x3, xzr, lsl #10 # CHECK-NEXT: 1 2 0.50 subs x17, x29, x20, lsl #63 # CHECK-NEXT: 1 2 0.50 subs x21, x22, x23, lsr #0 @@ -1520,9 +1520,9 @@ drps # CHECK-NEXT: 1 2 0.50 subs x2, x3, x4, asr #0 # CHECK-NEXT: 1 2 0.50 subs x5, x6, x7, asr #21 # CHECK-NEXT: 1 2 0.50 subs x8, x9, x10, asr #63 -# CHECK-NEXT: 1 1 0.25 cmn wzr, w4 -# CHECK-NEXT: 1 1 0.25 cmn w5, wzr -# CHECK-NEXT: 1 1 0.25 cmn w6, w7 +# CHECK-NEXT: 1 1 0.33 cmn wzr, w4 +# CHECK-NEXT: 1 1 0.33 cmn w5, wzr +# CHECK-NEXT: 1 1 0.33 cmn w6, w7 # CHECK-NEXT: 1 2 0.50 cmn w8, w9, lsl #15 # CHECK-NEXT: 1 2 0.50 cmn w10, w11, lsl #31 # CHECK-NEXT: 1 2 0.50 cmn w12, w13, lsr #0 @@ -1531,10 +1531,10 @@ drps # CHECK-NEXT: 1 2 0.50 cmn w18, w19, asr #0 # CHECK-NEXT: 1 2 0.50 cmn w20, w21, asr #22 # CHECK-NEXT: 1 2 0.50 cmn w22, w23, asr #31 -# CHECK-NEXT: 1 1 0.25 cmn x0, x3 -# CHECK-NEXT: 1 1 0.25 cmn xzr, x4 -# CHECK-NEXT: 1 1 0.25 cmn x5, xzr -# CHECK-NEXT: 1 1 0.25 cmn x6, x7 +# CHECK-NEXT: 1 1 0.33 cmn x0, x3 +# CHECK-NEXT: 1 1 0.33 cmn xzr, x4 +# CHECK-NEXT: 1 1 0.33 cmn x5, xzr +# CHECK-NEXT: 1 1 0.33 cmn x6, x7 # CHECK-NEXT: 1 2 0.50 cmn x8, x9, lsl #15 # CHECK-NEXT: 1 2 0.50 cmn x10, x11, lsl #63 # CHECK-NEXT: 1 2 0.50 cmn x12, x13, lsr #0 @@ -1543,10 +1543,10 @@ drps # CHECK-NEXT: 1 2 0.50 cmn x18, x19, asr #0 # CHECK-NEXT: 1 2 0.50 cmn x20, x21, asr #55 # CHECK-NEXT: 1 2 0.50 cmn x22, x23, asr #63 -# CHECK-NEXT: 1 1 0.25 cmp w0, w3 -# CHECK-NEXT: 1 1 0.25 cmp wzr, w4 -# CHECK-NEXT: 1 1 0.25 cmp w5, wzr -# CHECK-NEXT: 1 1 0.25 cmp w6, w7 +# CHECK-NEXT: 1 1 0.33 cmp w0, w3 +# CHECK-NEXT: 1 1 0.33 cmp wzr, w4 +# CHECK-NEXT: 1 1 0.33 cmp w5, wzr +# CHECK-NEXT: 1 1 0.33 cmp w6, w7 # CHECK-NEXT: 1 2 0.50 cmp w8, w9, lsl #15 # CHECK-NEXT: 1 2 0.50 cmp w10, w11, lsl #31 # CHECK-NEXT: 1 2 0.50 cmp w12, w13, lsr #0 @@ -1554,10 +1554,10 @@ drps # CHECK-NEXT: 1 2 0.50 cmp w18, w19, asr #0 # CHECK-NEXT: 1 2 0.50 cmp w20, w21, asr #22 # CHECK-NEXT: 1 2 0.50 cmp w22, w23, asr #31 -# CHECK-NEXT: 1 1 0.25 cmp x0, x3 -# CHECK-NEXT: 1 1 0.25 cmp xzr, x4 -# CHECK-NEXT: 1 1 0.25 cmp x5, xzr -# CHECK-NEXT: 1 1 0.25 cmp x6, x7 +# CHECK-NEXT: 1 1 0.33 cmp x0, x3 +# CHECK-NEXT: 1 1 0.33 cmp xzr, x4 +# CHECK-NEXT: 1 1 0.33 cmp x5, xzr +# CHECK-NEXT: 1 1 0.33 cmp x6, x7 # CHECK-NEXT: 1 2 0.50 cmp x8, x9, lsl #15 # CHECK-NEXT: 1 2 0.50 cmp x10, x11, lsl #63 # CHECK-NEXT: 1 2 0.50 cmp x12, x13, lsr #0 @@ -1566,8 +1566,8 @@ drps # CHECK-NEXT: 1 2 0.50 cmp x18, x19, asr #0 # CHECK-NEXT: 1 2 0.50 cmp x20, x21, asr #55 # CHECK-NEXT: 1 2 0.50 cmp x22, x23, asr #63 -# CHECK-NEXT: 1 1 0.25 cmp wzr, w0 -# CHECK-NEXT: 1 1 0.25 cmp xzr, x0 +# CHECK-NEXT: 1 1 0.33 cmp wzr, w0 +# CHECK-NEXT: 1 1 0.33 cmp xzr, x0 # CHECK-NEXT: 1 1 0.17 adc w29, w27, w25 # CHECK-NEXT: 1 1 0.17 adc wzr, w3, w4 # CHECK-NEXT: 1 1 0.17 adc w9, wzr, w10 @@ -1576,14 +1576,14 @@ drps # CHECK-NEXT: 1 1 0.17 adc xzr, x3, x4 # CHECK-NEXT: 1 1 0.17 adc x9, xzr, x10 # CHECK-NEXT: 1 1 0.17 adc x20, x0, xzr -# CHECK-NEXT: 1 1 0.25 adcs w29, w27, w25 -# CHECK-NEXT: 1 1 0.25 adcs wzr, w3, w4 -# CHECK-NEXT: 1 1 0.25 adcs w9, wzr, w10 -# CHECK-NEXT: 1 1 0.25 adcs w20, w0, wzr -# CHECK-NEXT: 1 1 0.25 adcs x29, x27, x25 -# CHECK-NEXT: 1 1 0.25 adcs xzr, x3, x4 -# CHECK-NEXT: 1 1 0.25 adcs x9, xzr, x10 -# CHECK-NEXT: 1 1 0.25 adcs x20, x0, xzr +# CHECK-NEXT: 1 1 0.33 adcs w29, w27, w25 +# CHECK-NEXT: 1 1 0.33 adcs wzr, w3, w4 +# CHECK-NEXT: 1 1 0.33 adcs w9, wzr, w10 +# CHECK-NEXT: 1 1 0.33 adcs w20, w0, wzr +# CHECK-NEXT: 1 1 0.33 adcs x29, x27, x25 +# CHECK-NEXT: 1 1 0.33 adcs xzr, x3, x4 +# CHECK-NEXT: 1 1 0.33 adcs x9, xzr, x10 +# CHECK-NEXT: 1 1 0.33 adcs x20, x0, xzr # CHECK-NEXT: 1 1 0.17 sbc w29, w27, w25 # CHECK-NEXT: 1 1 0.17 sbc wzr, w3, w4 # CHECK-NEXT: 1 1 0.17 ngc w9, w10 @@ -1592,26 +1592,26 @@ drps # CHECK-NEXT: 1 1 0.17 sbc xzr, x3, x4 # CHECK-NEXT: 1 1 0.17 ngc x9, x10 # CHECK-NEXT: 1 1 0.17 sbc x20, x0, xzr -# CHECK-NEXT: 1 1 0.25 sbcs w29, w27, w25 -# CHECK-NEXT: 1 1 0.25 sbcs wzr, w3, w4 -# CHECK-NEXT: 1 1 0.25 ngcs w9, w10 -# CHECK-NEXT: 1 1 0.25 sbcs w20, w0, wzr -# CHECK-NEXT: 1 1 0.25 sbcs x29, x27, x25 -# CHECK-NEXT: 1 1 0.25 sbcs xzr, x3, x4 -# CHECK-NEXT: 1 1 0.25 ngcs x9, x10 -# CHECK-NEXT: 1 1 0.25 sbcs x20, x0, xzr +# CHECK-NEXT: 1 1 0.33 sbcs w29, w27, w25 +# CHECK-NEXT: 1 1 0.33 sbcs wzr, w3, w4 +# CHECK-NEXT: 1 1 0.33 ngcs w9, w10 +# CHECK-NEXT: 1 1 0.33 sbcs w20, w0, wzr +# CHECK-NEXT: 1 1 0.33 sbcs x29, x27, x25 +# CHECK-NEXT: 1 1 0.33 sbcs xzr, x3, x4 +# CHECK-NEXT: 1 1 0.33 ngcs x9, x10 +# CHECK-NEXT: 1 1 0.33 sbcs x20, x0, xzr # CHECK-NEXT: 1 1 0.17 ngc w3, w12 # CHECK-NEXT: 1 1 0.17 ngc wzr, w9 # CHECK-NEXT: 1 1 0.17 ngc w23, wzr # CHECK-NEXT: 1 1 0.17 ngc x29, x30 # CHECK-NEXT: 1 1 0.17 ngc xzr, x0 # CHECK-NEXT: 1 1 0.17 ngc x0, xzr -# CHECK-NEXT: 1 1 0.25 ngcs w3, w12 -# CHECK-NEXT: 1 1 0.25 ngcs wzr, w9 -# CHECK-NEXT: 1 1 0.25 ngcs w23, wzr -# CHECK-NEXT: 1 1 0.25 ngcs x29, x30 -# CHECK-NEXT: 1 1 0.25 ngcs xzr, x0 -# CHECK-NEXT: 1 1 0.25 ngcs x0, xzr +# CHECK-NEXT: 1 1 0.33 ngcs w3, w12 +# CHECK-NEXT: 1 1 0.33 ngcs wzr, w9 +# CHECK-NEXT: 1 1 0.33 ngcs w23, wzr +# CHECK-NEXT: 1 1 0.33 ngcs x29, x30 +# CHECK-NEXT: 1 1 0.33 ngcs xzr, x0 +# CHECK-NEXT: 1 1 0.33 ngcs x0, xzr # CHECK-NEXT: 1 1 0.17 sbfx x1, x2, #3, #2 # CHECK-NEXT: 1 1 0.17 asr x3, x4, #63 # CHECK-NEXT: 1 1 0.17 asr wzr, wzr, #31 @@ -1701,30 +1701,30 @@ drps # CHECK-NEXT: 1 1 0.50 b.ne #4 # CHECK-NEXT: 1 1 0.50 b.ge #1048572 # CHECK-NEXT: 1 1 0.50 b.ge #-4 -# CHECK-NEXT: 1 1 0.25 ccmp w1, #31, #0, eq -# CHECK-NEXT: 1 1 0.25 ccmp w3, #0, #15, hs -# CHECK-NEXT: 1 1 0.25 ccmp wzr, #15, #13, hs -# CHECK-NEXT: 1 1 0.25 ccmp x9, #31, #0, le -# CHECK-NEXT: 1 1 0.25 ccmp x3, #0, #15, gt -# CHECK-NEXT: 1 1 0.25 ccmp xzr, #5, #7, ne -# CHECK-NEXT: 1 1 0.25 ccmn w1, #31, #0, eq -# CHECK-NEXT: 1 1 0.25 ccmn w3, #0, #15, hs -# CHECK-NEXT: 1 1 0.25 ccmn wzr, #15, #13, hs -# CHECK-NEXT: 1 1 0.25 ccmn x9, #31, #0, le -# CHECK-NEXT: 1 1 0.25 ccmn x3, #0, #15, gt -# CHECK-NEXT: 1 1 0.25 ccmn xzr, #5, #7, ne -# CHECK-NEXT: 1 1 0.25 ccmp w1, wzr, #0, eq -# CHECK-NEXT: 1 1 0.25 ccmp w3, w0, #15, hs -# CHECK-NEXT: 1 1 0.25 ccmp wzr, w15, #13, hs -# CHECK-NEXT: 1 1 0.25 ccmp x9, xzr, #0, le -# CHECK-NEXT: 1 1 0.25 ccmp x3, x0, #15, gt -# CHECK-NEXT: 1 1 0.25 ccmp xzr, x5, #7, ne -# CHECK-NEXT: 1 1 0.25 ccmn w1, wzr, #0, eq -# CHECK-NEXT: 1 1 0.25 ccmn w3, w0, #15, hs -# CHECK-NEXT: 1 1 0.25 ccmn wzr, w15, #13, hs -# CHECK-NEXT: 1 1 0.25 ccmn x9, xzr, #0, le -# CHECK-NEXT: 1 1 0.25 ccmn x3, x0, #15, gt -# CHECK-NEXT: 1 1 0.25 ccmn xzr, x5, #7, ne +# CHECK-NEXT: 1 1 0.33 ccmp w1, #31, #0, eq +# CHECK-NEXT: 1 1 0.33 ccmp w3, #0, #15, hs +# CHECK-NEXT: 1 1 0.33 ccmp wzr, #15, #13, hs +# CHECK-NEXT: 1 1 0.33 ccmp x9, #31, #0, le +# CHECK-NEXT: 1 1 0.33 ccmp x3, #0, #15, gt +# CHECK-NEXT: 1 1 0.33 ccmp xzr, #5, #7, ne +# CHECK-NEXT: 1 1 0.33 ccmn w1, #31, #0, eq +# CHECK-NEXT: 1 1 0.33 ccmn w3, #0, #15, hs +# CHECK-NEXT: 1 1 0.33 ccmn wzr, #15, #13, hs +# CHECK-NEXT: 1 1 0.33 ccmn x9, #31, #0, le +# CHECK-NEXT: 1 1 0.33 ccmn x3, #0, #15, gt +# CHECK-NEXT: 1 1 0.33 ccmn xzr, #5, #7, ne +# CHECK-NEXT: 1 1 0.33 ccmp w1, wzr, #0, eq +# CHECK-NEXT: 1 1 0.33 ccmp w3, w0, #15, hs +# CHECK-NEXT: 1 1 0.33 ccmp wzr, w15, #13, hs +# CHECK-NEXT: 1 1 0.33 ccmp x9, xzr, #0, le +# CHECK-NEXT: 1 1 0.33 ccmp x3, x0, #15, gt +# CHECK-NEXT: 1 1 0.33 ccmp xzr, x5, #7, ne +# CHECK-NEXT: 1 1 0.33 ccmn w1, wzr, #0, eq +# CHECK-NEXT: 1 1 0.33 ccmn w3, w0, #15, hs +# CHECK-NEXT: 1 1 0.33 ccmn wzr, w15, #13, hs +# CHECK-NEXT: 1 1 0.33 ccmn x9, xzr, #0, le +# CHECK-NEXT: 1 1 0.33 ccmn x3, x0, #15, gt +# CHECK-NEXT: 1 1 0.33 ccmn xzr, x5, #7, ne # CHECK-NEXT: 1 1 0.17 csel w1, w0, w19, ne # CHECK-NEXT: 1 1 0.17 csel wzr, w5, w9, eq # CHECK-NEXT: 1 1 0.17 csel w9, wzr, w30, gt @@ -2510,8 +2510,8 @@ drps # CHECK-NEXT: 3 6 0.67 * ldnp q23, q29, [x1, #-1024] # CHECK-NEXT: 1 1 0.17 mov w3, #983055 # CHECK-NEXT: 1 1 0.17 mov x10, #-6148914691236517206 -# CHECK-NEXT: 1 1 0.25 ands w4, w4, #0xf000f -# CHECK-NEXT: 1 1 0.25 ands x11, x11, #0xaaaaaaaaaaaaaaaa +# CHECK-NEXT: 1 1 0.33 ands w4, w4, #0xf000f +# CHECK-NEXT: 1 1 0.33 ands x11, x11, #0xaaaaaaaaaaaaaaaa # CHECK-NEXT: 1 1 0.17 and w12, w23, w21 # CHECK-NEXT: 1 1 0.17 and w16, w15, w1, lsl #1 # CHECK-NEXT: 1 1 0.17 and w9, w4, w10, lsl #31 @@ -2532,7 +2532,7 @@ drps # CHECK-NEXT: 1 1 0.17 orn w2, w5, w29 # CHECK-NEXT: 1 2 0.50 ands w7, wzr, w9, lsl #1 # CHECK-NEXT: 1 2 0.50 ands x3, x5, x20, ror #63 -# CHECK-NEXT: 1 1 0.25 bics w3, w5, w7 +# CHECK-NEXT: 1 1 0.33 bics w3, w5, w7 # CHECK-NEXT: 1 2 0.50 bics x3, xzr, x3, lsl #1 # CHECK-NEXT: 1 2 0.50 tst w3, w7, lsl #31 # CHECK-NEXT: 1 2 0.50 tst x2, x20, asr #2 @@ -2573,1199 +2573,1202 @@ drps # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 11.00 11.00 33.00 33.00 99.00 165.00 165.00 329.92 184.92 112.92 112.92 86.17 86.17 190.00 146.00 30.00 10.00 +# 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: 11.00 11.00 33.00 33.00 54.00 54.00 54.00 99.00 165.00 165.00 329.92 184.92 112.92 112.92 86.17 86.17 190.00 146.00 30.00 10.00 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w2, w3, #4095 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w30, w29, #1, lsl #12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w13, w5, #4095, lsl #12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x5, x7, #1638 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w20, wsp, #801 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add wsp, wsp, #1104 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add wsp, w30, #4084 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x0, x24, #291 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x3, x24, #4095, lsl #12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x8, sp, #1074 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add sp, x29, #3816 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w0, wsp, #4077 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w4, w20, #546, lsl #12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub sp, sp, #288 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub wsp, w19, #16 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds w13, w23, #291, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w2, #4095 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds w20, wsp, #0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x3, #1, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp sp, #20, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x30, #4095 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs x4, sp, #3822 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w3, #291, lsl #12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn wsp, #1365 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn sp, #1092, lsl #12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov sp, x30 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov wsp, w20 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov x11, sp -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov w24, wsp -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add wzr, w3, w5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w20, wzr, w4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w9, w3, wzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add xzr, x3, x5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x20, xzr, x4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x17, x29, x20, lsl #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - add x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w3, w5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds w20, wzr, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w9, w3, wzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x3, x5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds x20, xzr, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adds x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x17, x29, x20, lsl #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - adds x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub wzr, w3, w5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w9, w3, wzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub xzr, x3, x5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x17, x29, x20, lsl #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sub x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w3, w5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs w4, w6, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs w11, w13, w15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w9, w3, wzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w17, w29, w20, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w21, w22, w23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w24, w25, w26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w27, w28, w29, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w2, w3, w4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w5, w6, w7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs w8, w9, w10, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs x3, x5, x7 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x3, x5 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs x4, x6, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - subs x11, x13, x15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x9, x3, xzr, lsl #10 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x17, x29, x20, lsl #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x21, x22, x23, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x24, x25, x26, lsr #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x27, x28, x29, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x2, x3, x4, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x5, x6, x7, asr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - subs x8, x9, x10, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn wzr, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w5, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w6, w7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w8, w9, lsl #15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w10, w11, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w12, w13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w14, w15, lsr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w16, w17, lsr #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w18, w19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w20, w21, asr #22 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn w22, w23, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x0, x3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn xzr, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x5, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x6, x7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x8, x9, lsl #15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x10, x11, lsl #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x12, x13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x14, x15, lsr #41 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x16, x17, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x18, x19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x20, x21, asr #55 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmn x22, x23, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w0, w3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp wzr, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w5, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w6, w7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w8, w9, lsl #15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w10, w11, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w12, w13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w14, w15, lsr #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w18, w19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w20, w21, asr #22 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp w22, w23, asr #31 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x0, x3 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp xzr, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x5, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x6, x7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x8, x9, lsl #15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x10, x11, lsl #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x12, x13, lsr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x14, x15, lsr #41 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x16, x17, lsr #63 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x18, x19, asr #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x20, x21, asr #55 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cmp x22, x23, asr #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp wzr, w0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - cmp xzr, x0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc w9, wzr, w10 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc x9, xzr, x10 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs w9, wzr, w10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs x9, xzr, x10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adcs x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc w9, w10 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc x9, x10 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs w29, w27, w25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs wzr, w3, w4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs w9, w10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs w20, w0, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs x29, x27, x25 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs xzr, x3, x4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs x9, x10 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs x20, x0, xzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc w3, w12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc wzr, w9 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc w23, wzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc x29, x30 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc xzr, x0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc x0, xzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs w3, w12 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs wzr, w9 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs w23, wzr -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs x29, x30 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs xzr, x0 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs x0, xzr -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx x1, x2, #3, #2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x3, x4, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr wzr, wzr, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx w12, w9, #0, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfiz x4, x5, #52, #11 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx xzr, x4, #0, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfiz x4, xzr, #1, #6 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x5, x6, #12 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfi x4, x5, #52, #11 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil xzr, x4, #0, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfc x4, #1, #6 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil x5, x6, #12, #52 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxtb w1, w2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxtb xzr, w3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxth w9, w10 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxth x0, w1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxtw x3, w30 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - uxtb w1, w2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - uxth w9, w10 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx x3, x30, #0, #32 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w3, w2, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w9, w10, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x20, x21, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w1, wzr, #3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w3, w2, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w9, w10, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x20, x21, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr wzr, wzr, #3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w3, w2, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w9, w10, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x20, x21, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w1, wzr, #3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz x2, x3, #63, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz x9, x10, #5, #59 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz w11, w12, #31, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz w13, w14, #29, #3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x2, x3, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x9, x10, #5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w11, w12, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w13, w14, #29 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfi x2, x3, #63, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil x19, x20, #0, #64 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfi x9, x10, #5, #59 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfi w11, w12, #31, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfi w13, w14, #29, #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfc xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil x2, x3, #63, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil x19, x20, #0, #64 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil x9, x10, #5, #59 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil w11, w12, #31, #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil w13, w14, #29, #3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bfxil xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x2, x3, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x9, x10, #5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w11, w12, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w13, w14, #29 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfiz xzr, xzr, #10, #11 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx w9, w10, #0, #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x2, x3, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x19, x20, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x9, x10, #5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w9, w10, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w11, w12, #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w13, w14, #29 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx xzr, xzr, #10, #11 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - cbz w5, #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - cbz x5, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - cbnz x2, #-4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - cbnz x26, #1048572 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - cbz wzr, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - cbnz xzr, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - b.ne #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - b.ge #1048572 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - b.ge #-4 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w1, #31, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w3, #0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp wzr, #15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x9, #31, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x3, #0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp xzr, #5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w1, #31, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w3, #0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn wzr, #15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x9, #31, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x3, #0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn xzr, #5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w1, wzr, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w3, w0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp wzr, w15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x9, xzr, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x3, x0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp xzr, x5, #7, ne -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w1, wzr, #0, eq -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w3, w0, #15, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn wzr, w15, #13, hs -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x9, xzr, #0, le -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x3, x0, #15, gt -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn xzr, x5, #7, ne -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg w1, w0, w19, ne -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg wzr, w5, w9, eq -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg w9, wzr, w30, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg w1, w28, wzr, mi -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x19, x23, x29, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg xzr, x3, x4, ge -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x5, xzr, x6, hs -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x7, x8, xzr, lo -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset w3, eq -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset x9, pl -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm w20, ne -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm x30, ge -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w2, wzr, wzr, al -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x3, xzr, xzr, nv -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc w3, w5, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc wzr, w4, le -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset w9, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc x3, x5, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc xzr, x4, le -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset x9, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w5, w6, w6, nv -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x1, x2, x2, al -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv w3, w5, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv wzr, w4, le -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm w9, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv x3, x5, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv xzr, x4, le -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm x9, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x1, x0, x0, al -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w9, w8, w8, nv -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg w3, w5, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg wzr, w4, le -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg w9, wzr, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg x3, x5, gt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg xzr, x4, le -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg x9, xzr, lt -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x4, x8, x8, al -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w9, w8, w8, nv -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rbit w0, w7 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rbit x18, x3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev16 w17, w1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev16 x5, x2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev w18, w0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev32 x20, x1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev x22, x2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - clz w24, w3 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - clz x26, x4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cls w3, w5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cls x20, x5 -# CHECK-NEXT: - - - - - - - 12.00 - - - - - - - - - udiv w0, w7, w10 -# CHECK-NEXT: - - - - - - - 20.00 - - - - - - - - - udiv x9, x22, x4 -# CHECK-NEXT: - - - - - - - 12.00 - - - - - - - - - sdiv w12, w21, w0 -# CHECK-NEXT: - - - - - - - 20.00 - - - - - - - - - sdiv x13, x2, x1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w11, w12, w13 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x14, x15, x16 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w17, w18, w19 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x20, x21, x22 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w23, w24, w25 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x26, x27, x28 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror w0, w1, w2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x3, x4, x5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w6, w7, w8 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x9, x10, x11 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w12, w13, w14 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x15, x16, x17 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w18, w19, w20 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x21, x22, x23 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror w24, w25, w26 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x27, x28, x29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smulh x30, x29, x28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smulh xzr, x27, x26 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umulh x30, x29, x28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umulh x23, x30, xzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd w1, w3, w7, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd wzr, w0, w9, w11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd w13, wzr, w4, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd w19, w30, wzr, w29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - mul w4, w5, w6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd x1, x3, x7, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd xzr, x0, x9, x11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd x13, xzr, x4, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - madd x19, x30, xzr, x29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - mul x4, x5, x6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub w1, w3, w7, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub wzr, w0, w9, w11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub w13, wzr, w4, w4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub w19, w30, wzr, w29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - mneg w4, w5, w6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub x1, x3, x7, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub xzr, x0, x9, x11 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub x13, xzr, x4, x4 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - msub x19, x30, xzr, x29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - mneg x4, x5, x6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smaddl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smaddl xzr, w10, w11, x12 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smaddl x13, wzr, w14, x15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smaddl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smull x19, w20, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smsubl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smsubl xzr, w10, w11, x12 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smsubl x13, wzr, w14, x15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - smsubl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smnegl x19, w20, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - umaddl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - umaddl xzr, w10, w11, x12 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - umaddl x13, wzr, w14, x15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - umaddl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umull x19, w20, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - umsubl x3, w5, w2, x9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - umsubl x16, w17, wzr, x18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umnegl x19, w20, w21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smulh x30, x29, x28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smulh x23, x22, xzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umulh x23, x22, xzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - mul x19, x20, xzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - mneg w21, w22, w23 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smull x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umull x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - smnegl x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - umnegl x11, w13, w17 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr w3, w5, w7, #0 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr w11, w13, w17, #31 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr x3, x5, x7, #15 -# CHECK-NEXT: - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr x11, x13, x17, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x19, x23, #24 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x29, xzr, #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror w9, w13, #31 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmp s3, s5 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmpe s29, s30 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmp d4, d12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmpe d26, d22 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmp s1, s31, #0, eq -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmp s3, s0, #15, hs -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmp s31, s15, #13, hs -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmp d9, d31, #0, le -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmp d3, d0, #15, gt -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmp d31, d5, #7, ne -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmpe s1, s31, #0, eq -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmpe s3, s0, #15, hs -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmpe s31, s15, #13, hs -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmpe d9, d31, #0, le -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmpe d3, d0, #15, gt -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fccmpe d31, d5, #7, ne -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcsel s3, s20, s9, pl -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcsel d9, d10, d11, mi -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s0, s1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs s2, s3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg s4, s5 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fsqrt s6, s7 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d8, s9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, s11 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintn s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintp s14, s15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintm s16, s17 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintz s18, s19 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinta s20, s21 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintx s22, s23 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinti s24, s25 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d0, d1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs d2, d3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg d4, d5 -# CHECK-NEXT: - - - - - - - - - - - - - 4.00 - 4.00 - fsqrt d6, d7 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s8, d9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, d11 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintn d12, d13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintp d14, d15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintm d16, d17 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintz d18, d19 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinta d20, d21 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintx d22, d23 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinti d24, d25 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s26, h27 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d28, h29 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s20, s19, s17 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fdiv s1, s2, s3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd s4, s5, s6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub s7, s8, s9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax s10, s11, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin s13, s14, s15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm s16, s17, s18 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm s19, s20, s21 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul s22, s23, s2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul d20, d19, d17 -# CHECK-NEXT: - - - - - - - - - - - - - 4.00 - 4.00 - fdiv d1, d2, d3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d4, d5, d6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub d7, d8, d9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax d10, d11, d12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin d13, d14, d15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm d16, d17, d18 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm d19, d20, d21 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul d22, d23, d24 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub s3, s5, s6, s31 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub d3, d13, d0, d23 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs wzr, h20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w19, h0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, h30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x19, h0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs wzr, s20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w19, s0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, s30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x19, s0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs wzr, d20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w19, d0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, d30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x19, d0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu wzr, h20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w19, h0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x3, h5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x12, h30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x19, h0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu wzr, s20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w19, s0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x3, s5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x12, s30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x19, s0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu wzr, d20, #13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w19, d0, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x3, d5, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x12, d30, #45 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x19, d0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s14, x0, #64 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d23, w19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d31, wzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d14, w0, #32 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d23, x19, #1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d31, xzr, #20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d14, x0, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtns w3, h31 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtns xzr, h12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu wzr, h12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu x0, h0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtps wzr, h9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtps x12, h20 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu w30, h23 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu x29, h3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtms w2, h3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtms x4, h5 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu w6, h7 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu x8, h9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w10, h11 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w14, h15 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x15, h16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h17, w18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h19, x20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf h21, w22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf h23, x24 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtas w25, h26 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtas x27, h28 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtau w29, h30 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtau xzr, h0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtns w3, s31 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtns xzr, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu wzr, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu x0, s0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtps wzr, s9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtps x12, s20 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu w30, s23 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu x29, s3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtms w2, s3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtms x4, s5 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu w6, s7 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu x8, s9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w10, s11 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w14, s15 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x15, s16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s17, w18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s19, x20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf s21, w22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf s23, x24 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtas w25, s26 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtas x27, s28 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtau w29, s30 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtau xzr, s0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtns w3, d31 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtns xzr, d12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu wzr, d12 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu x0, d0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtps wzr, d9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtps x12, d20 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu w30, d23 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu x29, d3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtms w2, d3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtms x4, d5 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu w6, d7 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu x8, d9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w10, d11 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, d13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w14, d15 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x15, d16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d17, w18 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - scvtf d19, x20 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d21, w22 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - ucvtf d23, x24 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtas w25, d26 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtas x27, d28 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtau w29, d30 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fcvtau xzr, d0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fmov w3, s9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - fmov s9, w3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fmov x20, d31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - fmov d1, x15 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - fmov x3, v12.d[1] -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 fmov v1.d[1], x19 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s2, #0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s3, #1.00000000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d30, #16.00000000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s4, #1.06250000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d10, #1.93750000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s12, #-1.00000000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d16, #8.50000000 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr w3, #0 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr x29, #4 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldrsw xzr, #-4 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr s0, #8 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr d0, #1048572 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr q0, #-1048576 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - prfm pldl1strm, #0 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - prfm #22, #0 -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stxrb w18, w8, [sp] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stxrh w24, w15, [x16] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stxr w5, w6, [x17] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stxr w1, x10, [x21] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxrb w30, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxrh w17, [x4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr w22, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr x11, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr x11, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr x11, [x29] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stxp w12, w11, w10, [sp] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stxp wzr, x27, x9, [x12] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxp w0, wzr, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxp x17, x0, [x18] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxp x17, x0, [x18] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stlxrb w12, w22, [x0] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stlxrh w10, w1, [x1] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stlxr w9, w2, [x2] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stlxr w9, x3, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxrb w8, [x4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxrh w7, [x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr w6, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr x5, [x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr x5, [x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr x5, [x6] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stlxp w4, w5, w6, [sp] -# CHECK-NEXT: - - 0.50 0.50 0.33 0.83 0.83 - - - - - - - - - - stlxp wzr, x6, x7, [x1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxp w5, w18, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxp x6, x19, [x22] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxp x6, x19, [x22] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stlrb w24, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stlrh w25, [x30] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stlr w26, [x29] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stlr x27, [x28] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stlr x27, [x28] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stlr x27, [x28] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldarb w23, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldarh w22, [x30] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar wzr, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar x21, [x28] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar x21, [x28] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar x21, [x28] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - sturb w9, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - sturh wzr, [x12, #255] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stur w16, [x0, #-256] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stur x28, [x14, #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldurb w1, [x20, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldurh w20, [x1, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur w12, [sp, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur xzr, [x12, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursb x9, [x7, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursh x17, [x19, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursw x20, [x15, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfum pldl2keep, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursb w19, [x1, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursh w15, [x21, #-256] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur b0, [sp, #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur h12, [x12, #-1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur s15, [x0, #255] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur d31, [x5, #25] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur q9, [x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur b3, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur h5, [x4, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur s7, [x12, #-1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur d11, [x19, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur q13, [x1, #2] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w9, [x2], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3], #-256 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w10, [x3], #-256 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w19, [sp], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w20, [x30], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w21, [x12], #-256 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str xzr, [x9], #255 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x2, [x3], #1 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w9, [x2], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w10, [x3], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w19, [sp], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w20, [x30], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w21, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw xzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb wzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w19, [x12], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh wzr, [x9], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w2, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w19, [x12], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b0, [x0], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b3, [x3], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b5, [sp], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h10, [x10], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h13, [x23], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h15, [sp], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s20, [x20], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s23, [x23], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s25, [x0], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d20, [x20], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d23, [x23], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d25, [x0], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b0, [x0], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b3, [x3], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b5, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h10, [x10], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h13, [x23], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h15, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s20, [x20], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s23, [x23], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s25, [x0], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d20, [x20], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d23, [x23], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d25, [x0], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q20, [x1], #255 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q23, [x9], #1 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q25, [x20], #-256 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q10, [x1], #255 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q22, [sp], #1 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q21, [x20], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x3, [x4, #0]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w9, [x2, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w10, [x3, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w19, [sp, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w20, [x30, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w21, [x12, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str xzr, [x9, #255]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x2, [x3, #1]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w9, [x2, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w10, [x3, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w19, [sp, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w20, [x30, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w21, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw xzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb wzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w19, [x12, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh wzr, [x9, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w2, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w19, [x12, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b0, [x0, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b3, [x3, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b5, [sp, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h10, [x10, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h13, [x23, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h15, [sp, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s20, [x20, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s23, [x23, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s25, [x0, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d20, [x20, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d23, [x23, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d25, [x0, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b0, [x0, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b3, [x3, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b5, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h10, [x10, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h13, [x23, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h15, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s20, [x20, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s23, [x23, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s25, [x0, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d20, [x20, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d23, [x23, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d25, [x0, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q20, [x1, #255]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q23, [x9, #1]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q25, [x20, #-256]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q10, [x1, #255]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q22, [sp, #1]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q21, [x20, #-256]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - sttrb w9, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - sttrh wzr, [x12, #255] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - sttr w16, [x0, #-256] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - sttr x28, [x14, #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrb w1, [x20, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrh w20, [x1, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtr w12, [sp, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtr xzr, [x12, #255] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsb x9, [x7, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsh x17, [x19, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsw x20, [x15, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsb w19, [x1, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsh w15, [x21, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x4, [x29] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x30, [x12, #32760] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x20, [sp, #8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr xzr, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w2, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w17, [sp, #16380] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w13, [x2, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x2, [x5, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x23, [sp, #16380] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w2, [x4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w23, [x6, #8190] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh wzr, [sp, #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh x29, [x2, #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w26, [x3, #121] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w12, [x2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb w27, [sp, #4095] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb xzr, [x15] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - str x30, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - str w20, [x4, #16380] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - strh w17, [sp, #8190] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - strb w23, [x3, #4095] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - strb wzr, [x2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr b31, [sp, #4095] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h20, [x2, #8190] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr s10, [x19, #16380] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr d3, [x10, #32760] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q12, [sp, #65520] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr h10, [x30, x7, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str h11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str h12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 - - str h13, [x27, x5, sxtx #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr h16, [x24, w8, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str h18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr h19, [x21, wzr, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb w10, [x30, x7] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w11, [x29, x3, sxtx] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - strb w12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb x18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w10, [x30, x7, lsl #1] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - strh w11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh x13, [x27, x5, sxtx #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w16, [x24, w8, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w18, [x22, w10, sxtw] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - strh w19, [x21, wzr, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr s9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w10, [x30, x7, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str s12, [x28, xzr, sxtx] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - str w13, [x27, x5, sxtx #2] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - str w14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w16, [x24, w8, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x19, [x21, wzr, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x3, [sp, x5] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - str x9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr d10, [x30, x7, lsl #3] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - str x11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x13, [x27, x5, sxtx #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfm pldl1keep, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x16, [x24, w8, uxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str d19, [x21, wzr, sxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q3, [sp, x5] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q9, [x27, x6] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr q10, [x30, x7, lsl #4] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q11, [x29, x3, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q12, [x28, xzr, sxtx] -# CHECK-NEXT: - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 - - str q13, [x27, x5, sxtx #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q14, [x26, w6, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q15, [x25, w7, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr q16, [x24, w8, uxtw #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q17, [x23, w9, sxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q18, [x22, w10, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr q19, [x21, wzr, sxtw #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp w3, w5, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stp wzr, w9, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp w2, wzr, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp w9, w10, [sp, #4] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldpsw x9, x10, [sp, #4] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldpsw x9, x10, [x2, #-256] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldpsw x20, x30, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp x21, x29, [x2, #504] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp x22, x23, [x3, #-512] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp x24, x25, [x4, #8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp s29, s28, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stp s27, s26, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp s1, s2, [x3, #44] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stp d3, d5, [x9, #504] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stp d7, d11, [x10, #-512] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp d2, d3, [x30, #-8] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stp q3, q5, [sp] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stp q17, q19, [sp, #1008] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - - - ldp q23, q29, [x1, #-1024] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w3, w5, [sp], #0 -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - stp wzr, w9, [sp], #252 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w2, wzr, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w9, w10, [sp], #4 -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [sp], #4 -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [x2], #-256 -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x20, x30, [sp], #252 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x21, x29, [x2], #504 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x22, x23, [x3], #-512 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x24, x25, [x4], #8 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s29, s28, [sp], #252 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp s27, s26, [sp], #-256 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s1, s2, [x3], #44 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d3, d5, [x9], #504 -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d7, d11, [x10], #-512 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp d2, d3, [x30], #-8 -# CHECK-NEXT: - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - stp q3, q5, [sp], #0 -# CHECK-NEXT: - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - stp q17, q19, [sp], #1008 -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.50 0.50 0.50 0.50 0.50 0.50 - - - - ldp q23, q29, [x1], #-1024 -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w3, w5, [sp, #0]! -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - stp wzr, w9, [sp, #252]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w2, wzr, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w9, w10, [sp, #4]! -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [sp, #4]! -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [x2, #-256]! -# CHECK-NEXT: - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x20, x30, [sp, #252]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x21, x29, [x2, #504]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x22, x23, [x3, #-512]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x24, x25, [x4, #8]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s29, s28, [sp, #252]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp s27, s26, [sp, #-256]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s1, s2, [x3, #44]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d3, d5, [x9, #504]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d7, d11, [x10, #-512]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp d2, d3, [x30, #-8]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 1.00 1.00 - - stp q3, q5, [sp, #0]! -# CHECK-NEXT: - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 1.00 1.00 - - stp q17, q19, [sp, #1008]! -# CHECK-NEXT: - - - - 0.67 0.67 0.67 0.50 0.50 0.50 0.50 0.50 0.50 - - - - ldp q23, q29, [x1, #-1024]! -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp w3, w5, [sp] -# CHECK-NEXT: - - 0.50 0.50 - 0.50 0.50 - - - - - - - - - - stnp wzr, w9, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp w2, wzr, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp w9, w10, [sp, #4] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp x21, x29, [x2, #504] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp x22, x23, [x3, #-512] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp x24, x25, [x4, #8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp s29, s28, [sp, #252] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stnp s27, s26, [sp, #-256] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp s1, s2, [x3, #44] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stnp d3, d5, [x9, #504] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stnp d7, d11, [x10, #-512] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp d2, d3, [x30, #-8] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stnp q3, q5, [sp] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stnp q17, q19, [sp, #1008] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - - - - ldnp q23, q29, [x1, #-1024] -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov w3, #983055 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov x10, #-6148914691236517206 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ands w4, w4, #0xf000f -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - ands x11, x11, #0xaaaaaaaaaaaaaaaa -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w12, w23, w21 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w16, w15, w1, lsl #1 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w9, w4, w10, lsl #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, w30, w11 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and x3, x5, x7, lsl #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and x5, x14, x19, asr #4 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, w17, w19, ror #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w0, w2, wzr, lsr #17 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, w30, w11, asr #2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and xzr, x4, x26 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, wzr, w20, ror #2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and x7, x20, xzr, asr #63 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - bic x13, x20, x14, lsl #47 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - bic w2, w7, w9 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orr w2, w7, w0, asr #31 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orr x8, x9, x10, lsl #12 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orn x3, x5, x7, asr #2 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orn w2, w5, w29 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ands w7, wzr, w9, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ands x3, x5, x20, ror #63 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - bics w3, w5, w7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - bics x3, xzr, x3, lsl #1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - tst w3, w7, lsl #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - tst x2, x20, asr #2 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov x3, x6 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov x3, xzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov wzr, w2 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov w3, w5 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz w2, #0, lsl #16 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov w2, #-1235 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov x2, #5299989643264 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov x2, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk w3, #0 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz x4, #0, lsl #16 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk w5, #0, lsl #16 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz x6, #0, lsl #32 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk x7, #0, lsl #32 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz x8, #0, lsl #48 -# CHECK-NEXT: - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk x9, #0, lsl #48 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adr x2, #1600 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adrp x21, #6553600 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adr x0, #262144 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - tbz x12, #62, #0 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - tbz x12, #62, #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - tbz x12, #62, #-32768 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - tbnz x12, #60, #32764 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - b #4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - b #-4 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - b #134217724 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - br x20 -# CHECK-NEXT: 0.50 0.50 - - - - - - - 0.50 0.50 - - - - - - blr xzr -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - ret x10 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - ret -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - eret -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - drps +# 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.17 0.17 0.17 0.17 0.17 0.17 - - - - add w2, w3, #4095 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w30, w29, #1, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w13, w5, #4095, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x5, x7, #1638 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w20, wsp, #801 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add wsp, wsp, #1104 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add wsp, w30, #4084 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x0, x24, #291 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x3, x24, #4095, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x8, sp, #1074 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add sp, x29, #3816 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w0, wsp, #4077 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w4, w20, #546, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub sp, sp, #288 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub wsp, w19, #16 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds w13, w23, #291, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w2, #4095 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds w20, wsp, #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x3, #1, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp sp, #20, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x30, #4095 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs x4, sp, #3822 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w3, #291, lsl #12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn wsp, #1365 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn sp, #1092, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov sp, x30 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov wsp, w20 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov x11, sp +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov w24, wsp +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w3, w5, w7 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add wzr, w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w20, wzr, w4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w4, w6, wzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add w11, w13, w15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w9, w3, wzr, lsl #10 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x3, x5, x7 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add xzr, x3, x5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x20, xzr, x4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x4, x6, xzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - add x11, x13, x15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x17, x29, x20, lsl #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - add x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w3, w5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds w20, wzr, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds w4, w6, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds w11, w13, w15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w9, w3, wzr, lsl #10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds x3, x5, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x3, x5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds x20, xzr, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds x4, x6, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adds x11, x13, x15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x17, x29, x20, lsl #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - adds x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w3, w5, w7 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub wzr, w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w4, w6, wzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub w11, w13, w15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w9, w3, wzr, lsl #10 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub x3, x5, x7 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub xzr, x3, x5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub x4, x6, xzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sub x11, x13, x15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x17, x29, x20, lsl #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sub x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w3, w5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs w4, w6, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs w11, w13, w15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w9, w3, wzr, lsl #10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w17, w29, w20, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w21, w22, w23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w24, w25, w26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w27, w28, w29, lsr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w2, w3, w4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w5, w6, w7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs w8, w9, w10, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs x3, x5, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x3, x5 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs x4, x6, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - subs x11, x13, x15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x9, x3, xzr, lsl #10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x17, x29, x20, lsl #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x21, x22, x23, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x24, x25, x26, lsr #18 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x27, x28, x29, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x2, x3, x4, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x5, x6, x7, asr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - subs x8, x9, x10, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn wzr, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w5, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn w6, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w8, w9, lsl #15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w10, w11, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w12, w13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w14, w15, lsr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w16, w17, lsr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w18, w19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w20, w21, asr #22 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn w22, w23, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x0, x3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn xzr, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x5, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmn x6, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x8, x9, lsl #15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x10, x11, lsl #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x12, x13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x14, x15, lsr #41 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x16, x17, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x18, x19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x20, x21, asr #55 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmn x22, x23, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w0, w3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp wzr, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w5, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp w6, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w8, w9, lsl #15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w10, w11, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w12, w13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w14, w15, lsr #21 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w18, w19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w20, w21, asr #22 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp w22, w23, asr #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x0, x3 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp xzr, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x5, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp x6, x7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x8, x9, lsl #15 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x10, x11, lsl #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x12, x13, lsr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x14, x15, lsr #41 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x16, x17, lsr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x18, x19, asr #0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x20, x21, asr #55 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - cmp x22, x23, asr #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp wzr, w0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - cmp xzr, x0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc w29, w27, w25 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc wzr, w3, w4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc w9, wzr, w10 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc w20, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc x29, x27, x25 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc xzr, x3, x4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc x9, xzr, x10 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - adc x20, x0, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs w29, w27, w25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs wzr, w3, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs w9, wzr, w10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs w20, w0, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs x29, x27, x25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs xzr, x3, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs x9, xzr, x10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - adcs x20, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc w29, w27, w25 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc wzr, w3, w4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc w9, w10 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc w20, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc x29, x27, x25 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc xzr, x3, x4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc x9, x10 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbc x20, x0, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs w29, w27, w25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs wzr, w3, w4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs w9, w10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs w20, w0, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs x29, x27, x25 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs xzr, x3, x4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs x9, x10 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - sbcs x20, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc w3, w12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc wzr, w9 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc w23, wzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc x29, x30 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc xzr, x0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ngc x0, xzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs w3, w12 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs wzr, w9 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs w23, wzr +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs x29, x30 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs xzr, x0 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ngcs x0, xzr +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx x1, x2, #3, #2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x3, x4, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr wzr, wzr, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx w12, w9, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfiz x4, x5, #52, #11 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx xzr, x4, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfiz x4, xzr, #1, #6 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x5, x6, #12 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfi x4, x5, #52, #11 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil xzr, x4, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfc x4, #1, #6 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil x5, x6, #12, #52 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxtb w1, w2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxtb xzr, w3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxth w9, w10 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxth x0, w1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sxtw x3, w30 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - uxtb w1, w2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - uxth w9, w10 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx x3, x30, #0, #32 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w3, w2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w9, w10, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x20, x21, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w1, wzr, #3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w3, w2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w9, w10, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x20, x21, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr wzr, wzr, #3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w3, w2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w9, w10, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x20, x21, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w1, wzr, #3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz x2, x3, #63, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz x9, x10, #5, #59 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz w11, w12, #31, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz w13, w14, #29, #3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfiz xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x2, x3, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x9, x10, #5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w11, w12, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w13, w14, #29 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - sbfx xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfi x2, x3, #63, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil x19, x20, #0, #64 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfi x9, x10, #5, #59 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfi w11, w12, #31, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfi w13, w14, #29, #3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfc xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil x2, x3, #63, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil x19, x20, #0, #64 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil x9, x10, #5, #59 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil w9, w10, #0, #32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil w11, w12, #31, #1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil w13, w14, #29, #3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - bfxil xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x2, x3, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x9, x10, #5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w11, w12, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w13, w14, #29 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfiz xzr, xzr, #10, #11 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx w9, w10, #0, #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x2, x3, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x19, x20, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x9, x10, #5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w9, w10, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w11, w12, #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w13, w14, #29 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ubfx xzr, xzr, #10, #11 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - cbz w5, #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - cbz x5, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - cbnz x2, #-4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - cbnz x26, #1048572 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - cbz wzr, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - cbnz xzr, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - b.ne #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - b.ge #1048572 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - b.ge #-4 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w1, #31, #0, eq +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w3, #0, #15, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp wzr, #15, #13, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x9, #31, #0, le +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x3, #0, #15, gt +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp xzr, #5, #7, ne +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w1, #31, #0, eq +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w3, #0, #15, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn wzr, #15, #13, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x9, #31, #0, le +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x3, #0, #15, gt +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn xzr, #5, #7, ne +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w1, wzr, #0, eq +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp w3, w0, #15, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp wzr, w15, #13, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x9, xzr, #0, le +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp x3, x0, #15, gt +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmp xzr, x5, #7, ne +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w1, wzr, #0, eq +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn w3, w0, #15, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn wzr, w15, #13, hs +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x9, xzr, #0, le +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn x3, x0, #15, gt +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ccmn xzr, x5, #7, ne +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csel x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg w1, w0, w19, ne +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg wzr, w5, w9, eq +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg w9, wzr, w30, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg w1, w28, wzr, mi +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x19, x23, x29, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg xzr, x3, x4, ge +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x5, xzr, x6, hs +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x7, x8, xzr, lo +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset w3, eq +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset x9, pl +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm w20, ne +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm x30, ge +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w2, wzr, wzr, al +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x3, xzr, xzr, nv +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc w3, w5, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc wzr, w4, le +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset w9, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc x3, x5, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinc xzr, x4, le +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cset x9, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc w5, w6, w6, nv +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinc x1, x2, x2, al +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv w3, w5, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv wzr, w4, le +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm w9, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv x3, x5, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cinv xzr, x4, le +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csetm x9, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv x1, x0, x0, al +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w9, w8, w8, nv +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg w3, w5, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg wzr, w4, le +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg w9, wzr, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg x3, x5, gt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg xzr, x4, le +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cneg x9, xzr, lt +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csneg x4, x8, x8, al +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - csinv w9, w8, w8, nv +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rbit w0, w7 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rbit x18, x3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev16 w17, w1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev16 x5, x2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev w18, w0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev32 x20, x1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - rev x22, x2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - clz w24, w3 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - clz x26, x4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cls w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - cls x20, x5 +# CHECK-NEXT: - - - - - - - - - - 12.00 - - - - - - - - - udiv w0, w7, w10 +# CHECK-NEXT: - - - - - - - - - - 20.00 - - - - - - - - - udiv x9, x22, x4 +# CHECK-NEXT: - - - - - - - - - - 12.00 - - - - - - - - - sdiv w12, w21, w0 +# CHECK-NEXT: - - - - - - - - - - 20.00 - - - - - - - - - sdiv x13, x2, x1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w11, w12, w13 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x14, x15, x16 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w17, w18, w19 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x20, x21, x22 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w23, w24, w25 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x26, x27, x28 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror w0, w1, w2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x3, x4, x5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl w6, w7, w8 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsl x9, x10, x11 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr w12, w13, w14 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - lsr x15, x16, x17 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr w18, w19, w20 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - asr x21, x22, x23 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror w24, w25, w26 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x27, x28, x29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smulh x30, x29, x28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smulh xzr, x27, x26 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umulh x30, x29, x28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umulh x23, x30, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd w1, w3, w7, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd wzr, w0, w9, w11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd w13, wzr, w4, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd w19, w30, wzr, w29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - mul w4, w5, w6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd x1, x3, x7, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd xzr, x0, x9, x11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd x13, xzr, x4, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - madd x19, x30, xzr, x29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - mul x4, x5, x6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub w1, w3, w7, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub wzr, w0, w9, w11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub w13, wzr, w4, w4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub w19, w30, wzr, w29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - mneg w4, w5, w6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub x1, x3, x7, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub xzr, x0, x9, x11 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub x13, xzr, x4, x4 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - msub x19, x30, xzr, x29 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - mneg x4, x5, x6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smaddl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smaddl xzr, w10, w11, x12 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smaddl x13, wzr, w14, x15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smaddl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smull x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smsubl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smsubl xzr, w10, w11, x12 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smsubl x13, wzr, w14, x15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - smsubl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smnegl x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - umaddl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - umaddl xzr, w10, w11, x12 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - umaddl x13, wzr, w14, x15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - umaddl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umull x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - umsubl x3, w5, w2, x9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - umsubl x16, w17, wzr, x18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umnegl x19, w20, w21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smulh x30, x29, x28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smulh x23, x22, xzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umulh x23, x22, xzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - mul x19, x20, xzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - mneg w21, w22, w23 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smull x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umull x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - smnegl x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - umnegl x11, w13, w17 +# CHECK-NEXT: - - - - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr w3, w5, w7, #0 +# CHECK-NEXT: - - - - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr w11, w13, w17, #31 +# CHECK-NEXT: - - - - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr x3, x5, x7, #15 +# CHECK-NEXT: - - - - - - - - - - 0.67 0.67 0.17 0.17 0.17 0.17 - - - - extr x11, x13, x17, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x19, x23, #24 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror x29, xzr, #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ror w9, w13, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmp s3, s5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmp s31, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmpe s29, s30 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmpe s15, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmp d4, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmp d23, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmpe d26, d22 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmpe d29, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmp s1, s31, #0, eq +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmp s3, s0, #15, hs +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmp s31, s15, #13, hs +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmp d9, d31, #0, le +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmp d3, d0, #15, gt +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmp d31, d5, #7, ne +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmpe s1, s31, #0, eq +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmpe s3, s0, #15, hs +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmpe s31, s15, #13, hs +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmpe d9, d31, #0, le +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmpe d3, d0, #15, gt +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fccmpe d31, d5, #7, ne +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcsel s3, s20, s9, pl +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcsel d9, d10, d11, mi +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s0, s1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs s2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg s4, s5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fsqrt s6, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d8, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, s11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintn s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintp s14, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintm s16, s17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintz s18, s19 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta s20, s21 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintx s22, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinti s24, s25 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d0, d1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs d2, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg d4, d5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.00 - 4.00 - fsqrt d6, d7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s8, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt h10, d11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintn d12, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintp d14, d15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintm d16, d17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintz d18, d19 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta d20, d21 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintx d22, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinti d24, d25 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt s26, h27 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt d28, h29 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul s20, s19, s17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fdiv s1, s2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd s4, s5, s6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub s7, s8, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax s10, s11, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin s13, s14, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm s16, s17, s18 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm s19, s20, s21 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul s22, s23, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul d20, d19, d17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.00 - 4.00 - fdiv d1, d2, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd d4, d5, d6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub d7, d8, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax d10, d11, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin d13, d14, d15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm d16, d17, d18 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm d19, d20, d21 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmul d22, d23, d24 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmadd d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsub d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmadd d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub s3, s5, s6, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsub d3, d13, d0, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs wzr, h20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w19, h0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, h30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x19, h0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs wzr, s20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w19, s0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, s30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x19, s0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs wzr, d20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w19, d0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, d30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x19, d0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu wzr, h20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w19, h0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x3, h5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x12, h30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x19, h0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu wzr, s20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w19, s0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x3, s5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x12, s30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x19, s0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu wzr, d20, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w19, d0, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x3, d5, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x12, d30, #45 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x19, d0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d23, w19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d31, wzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d14, w0, #32 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d23, x19, #1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d31, xzr, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d14, x0, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtns w3, h31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtns xzr, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu wzr, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu x0, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtps wzr, h9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtps x12, h20 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu w30, h23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu x29, h3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtms w2, h3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtms x4, h5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu w6, h7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu x8, h9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w10, h11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w14, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x15, h16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h17, w18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h19, x20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf h21, w22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf h23, x24 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtas w25, h26 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtas x27, h28 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtau w29, h30 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtau xzr, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtns w3, s31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtns xzr, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu wzr, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu x0, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtps wzr, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtps x12, s20 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu w30, s23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu x29, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtms w2, s3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtms x4, s5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu w6, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu x8, s9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w10, s11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w14, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x15, s16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s17, w18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s19, x20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf s21, w22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf s23, x24 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtas w25, s26 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtas x27, s28 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtau w29, s30 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtau xzr, s0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtns w3, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtns xzr, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu wzr, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtnu x0, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtps wzr, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtps x12, d20 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu w30, d23 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtpu x29, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtms w2, d3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtms x4, d5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu w6, d7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtmu x8, d9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs w10, d11 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzs x12, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu w14, d15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtzu x15, d16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d17, w18 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - scvtf d19, x20 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d21, w22 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - ucvtf d23, x24 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtas w25, d26 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtas x27, d28 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtau w29, d30 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fcvtau xzr, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fmov w3, s9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - fmov s9, w3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fmov x20, d31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - fmov d1, x15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - fmov x3, v12.d[1] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 fmov v1.d[1], x19 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s2, #0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s3, #1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d30, #16.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s4, #1.06250000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d10, #1.93750000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov s12, #-1.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov d16, #8.50000000 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr w3, #0 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr x29, #4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldrsw xzr, #-4 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr s0, #8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr d0, #1048572 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - ldr q0, #-1048576 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - prfm pldl1strm, #0 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.25 0.25 0.25 0.25 - - - - - - prfm #22, #0 +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stxrb w18, w8, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stxrh w24, w15, [x16] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stxr w5, w6, [x17] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stxr w1, x10, [x21] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxrb w30, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxrh w17, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr w22, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr x11, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr x11, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxr x11, [x29] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stxp w12, w11, w10, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stxp wzr, x27, x9, [x12] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxp w0, wzr, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxp x17, x0, [x18] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldxp x17, x0, [x18] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stlxrb w12, w22, [x0] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stlxrh w10, w1, [x1] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stlxr w9, w2, [x2] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stlxr w9, x3, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxrb w8, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxrh w7, [x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr w6, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr x5, [x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr x5, [x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxr x5, [x6] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stlxp w4, w5, w6, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - 0.33 0.83 0.83 - - - - - - - - - - stlxp wzr, x6, x7, [x1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxp w5, w18, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxp x6, x19, [x22] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldaxp x6, x19, [x22] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stlrb w24, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stlrh w25, [x30] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stlr w26, [x29] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stlr x27, [x28] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stlr x27, [x28] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stlr x27, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldarb w23, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldarh w22, [x30] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar wzr, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar x21, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar x21, [x28] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldar x21, [x28] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - sturb w9, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - sturh wzr, [x12, #255] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stur w16, [x0, #-256] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stur x28, [x14, #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldurb w1, [x20, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldurh w20, [x1, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur w12, [sp, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur xzr, [x12, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursb x9, [x7, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursh x17, [x19, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursw x20, [x15, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfum pldl2keep, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursb w19, [x1, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldursh w15, [x21, #-256] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur b0, [sp, #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur h12, [x12, #-1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur s15, [x0, #255] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur d31, [x5, #25] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stur q9, [x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur b3, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur h5, [x4, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur s7, [x12, #-1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur d11, [x19, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldur q13, [x1, #2] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w9, [x2], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w10, [x3], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w19, [sp], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w20, [x30], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w21, [x12], #-256 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str xzr, [x9], #255 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x2, [x3], #1 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w9, [x2], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w10, [x3], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w19, [sp], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w20, [x30], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w21, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw xzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb wzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w19, [x12], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh wzr, [x9], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w2, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w19, [x12], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b0, [x0], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b3, [x3], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b5, [sp], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h10, [x10], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h13, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h15, [sp], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s20, [x20], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s23, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s25, [x0], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d20, [x20], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d23, [x23], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d25, [x0], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b0, [x0], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b3, [x3], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b5, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h10, [x10], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h13, [x23], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h15, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s20, [x20], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s23, [x23], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s25, [x0], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d20, [x20], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d23, [x23], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d25, [x0], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q20, [x1], #255 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q23, [x9], #1 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q25, [x20], #-256 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q10, [x1], #255 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q22, [sp], #1 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q21, [x20], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x3, [x4, #0]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w9, [x2, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strb w10, [x3, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w9, [x2, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - strh w10, [x3, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w19, [sp, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w20, [x30, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str w21, [x12, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str xzr, [x9, #255]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x2, [x3, #1]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - str x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w9, [x2, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrb w10, [x3, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w9, [x2, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrh w10, [x3, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w19, [sp, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w20, [x30, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr w21, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw xzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsw x19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb wzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsb w19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh wzr, [x9, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w2, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldrsh w19, [x12, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b0, [x0, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b3, [x3, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str b5, [sp, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h10, [x10, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h13, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str h15, [sp, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s20, [x20, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s23, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str s25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d20, [x20, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d23, [x23, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str d25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b0, [x0, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b3, [x3, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr b5, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h10, [x10, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h13, [x23, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr h15, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s20, [x20, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s23, [x23, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr s25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d20, [x20, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d23, [x23, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr d25, [x0, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q20, [x1, #255]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q23, [x9, #1]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldr q25, [x20, #-256]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q10, [x1, #255]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q22, [sp, #1]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - str q21, [x20, #-256]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - sttrb w9, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - sttrh wzr, [x12, #255] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - sttr w16, [x0, #-256] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - sttr x28, [x14, #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrb w1, [x20, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrh w20, [x1, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtr w12, [sp, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtr xzr, [x12, #255] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsb x9, [x7, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsh x17, [x19, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsw x20, [x15, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsb w19, [x1, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldtrsh w15, [x21, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x4, [x29] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x30, [x12, #32760] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x20, [sp, #8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr xzr, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w2, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w17, [sp, #16380] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w13, [x2, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x2, [x5, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x23, [sp, #16380] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w2, [x4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w23, [x6, #8190] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh wzr, [sp, #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh x29, [x2, #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w26, [x3, #121] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w12, [x2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb w27, [sp, #4095] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb xzr, [x15] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - str x30, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - str w20, [x4, #16380] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - strh w17, [sp, #8190] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - strb w23, [x3, #4095] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - strb wzr, [x2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr b31, [sp, #4095] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h20, [x2, #8190] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr s10, [x19, #16380] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr d3, [x10, #32760] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q12, [sp, #65520] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr h10, [x30, x7, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str h11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str h12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 - - str h13, [x27, x5, sxtx #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr h16, [x24, w8, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr h17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str h18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr h19, [x21, wzr, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb w10, [x30, x7] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w11, [x29, x3, sxtx] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - strb w12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb w15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrb w17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsb x18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w10, [x30, x7, lsl #1] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - strh w11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh x13, [x27, x5, sxtx #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsh w16, [x24, w8, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrh w18, [x22, w10, sxtw] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - strh w19, [x21, wzr, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr s9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w10, [x30, x7, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str s12, [x28, xzr, sxtx] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - str w13, [x27, x5, sxtx #2] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - str w14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w16, [x24, w8, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr w18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldrsw x19, [x21, wzr, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x3, [sp, x5] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - str x9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr d10, [x30, x7, lsl #3] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - str x11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x13, [x27, x5, sxtx #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfm pldl1keep, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x16, [x24, w8, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr x18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str d19, [x21, wzr, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q3, [sp, x5] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q9, [x27, x6] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr q10, [x30, x7, lsl #4] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q11, [x29, x3, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q12, [x28, xzr, sxtx] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 0.50 0.50 - - str q13, [x27, x5, sxtx #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q14, [x26, w6, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q15, [x25, w7, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr q16, [x24, w8, uxtw #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr q17, [x23, w9, sxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str q18, [x22, w10, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldr q19, [x21, wzr, sxtw #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp w3, w5, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stp wzr, w9, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp w2, wzr, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp w9, w10, [sp, #4] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldpsw x9, x10, [sp, #4] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldpsw x9, x10, [x2, #-256] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldpsw x20, x30, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp x21, x29, [x2, #504] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp x22, x23, [x3, #-512] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp x24, x25, [x4, #8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp s29, s28, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stp s27, s26, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp s1, s2, [x3, #44] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stp d3, d5, [x9, #504] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stp d7, d11, [x10, #-512] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldp d2, d3, [x30, #-8] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stp q3, q5, [sp] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stp q17, q19, [sp, #1008] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ldp q23, q29, [x1, #-1024] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w3, w5, [sp], #0 +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - stp wzr, w9, [sp], #252 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w2, wzr, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w9, w10, [sp], #4 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [sp], #4 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [x2], #-256 +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x20, x30, [sp], #252 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x21, x29, [x2], #504 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x22, x23, [x3], #-512 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x24, x25, [x4], #8 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s29, s28, [sp], #252 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp s27, s26, [sp], #-256 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s1, s2, [x3], #44 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d3, d5, [x9], #504 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d7, d11, [x10], #-512 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp d2, d3, [x30], #-8 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - stp q3, q5, [sp], #0 +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 1.00 1.00 - - stp q17, q19, [sp], #1008 +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.50 0.50 0.50 0.50 0.50 0.50 - - - - ldp q23, q29, [x1], #-1024 +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w3, w5, [sp, #0]! +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 0.17 0.17 0.17 0.17 0.17 0.17 - - - - stp wzr, w9, [sp, #252]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w2, wzr, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp w9, w10, [sp, #4]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [sp, #4]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x9, x10, [x2, #-256]! +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldpsw x20, x30, [sp, #252]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x21, x29, [x2, #504]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x22, x23, [x3, #-512]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.17 0.17 0.17 0.17 0.17 0.17 - - - - ldp x24, x25, [x4, #8]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s29, s28, [sp, #252]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp s27, s26, [sp, #-256]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp s1, s2, [x3, #44]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d3, d5, [x9, #504]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 0.50 0.50 - - stp d7, d11, [x10, #-512]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 - - - - ldp d2, d3, [x30, #-8]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 1.00 1.00 - - stp q3, q5, [sp, #0]! +# CHECK-NEXT: - - - - - - - - 0.50 0.50 0.33 0.33 0.33 0.33 0.33 0.33 1.00 1.00 - - stp q17, q19, [sp, #1008]! +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 0.50 0.50 0.50 0.50 0.50 0.50 - - - - ldp q23, q29, [x1, #-1024]! +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp w3, w5, [sp] +# CHECK-NEXT: - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - - - - stnp wzr, w9, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp w2, wzr, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp w9, w10, [sp, #4] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp x21, x29, [x2, #504] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp x22, x23, [x3, #-512] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp x24, x25, [x4, #8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp s29, s28, [sp, #252] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stnp s27, s26, [sp, #-256] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp s1, s2, [x3, #44] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stnp d3, d5, [x9, #504] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - stnp d7, d11, [x10, #-512] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnp d2, d3, [x30, #-8] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stnp q3, q5, [sp] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 1.00 1.00 - - stnp q17, q19, [sp, #1008] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - - - - ldnp q23, q29, [x1, #-1024] +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov w3, #983055 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov x10, #-6148914691236517206 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ands w4, w4, #0xf000f +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - ands x11, x11, #0xaaaaaaaaaaaaaaaa +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w12, w23, w21 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w16, w15, w1, lsl #1 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w9, w4, w10, lsl #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, w30, w11 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and x3, x5, x7, lsl #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and x5, x14, x19, asr #4 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, w17, w19, ror #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w0, w2, wzr, lsr #17 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, w30, w11, asr #2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and xzr, x4, x26 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and w3, wzr, w20, ror #2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - and x7, x20, xzr, asr #63 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - bic x13, x20, x14, lsl #47 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - bic w2, w7, w9 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orr w2, w7, w0, asr #31 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orr x8, x9, x10, lsl #12 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orn x3, x5, x7, asr #2 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - orn w2, w5, w29 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - ands w7, wzr, w9, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - ands x3, x5, x20, ror #63 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.25 0.25 0.25 0.25 - - - - - - bics w3, w5, w7 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - bics x3, xzr, x3, lsl #1 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - tst w3, w7, lsl #31 +# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - 0.50 0.50 - - - - - - - - tst x2, x20, asr #2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov x3, x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov x3, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov wzr, w2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov w3, w5 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz w2, #0, lsl #16 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov w2, #-1235 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - mov x2, #5299989643264 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov x2, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk w3, #0 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz x4, #0, lsl #16 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk w5, #0, lsl #16 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz x6, #0, lsl #32 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk x7, #0, lsl #32 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movz x8, #0, lsl #48 +# CHECK-NEXT: - - - - - - - - - - 0.17 0.17 0.17 0.17 0.17 0.17 - - - - movk x9, #0, lsl #48 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adr x2, #1600 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adrp x21, #6553600 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - adr x0, #262144 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - tbz x12, #62, #0 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - tbz x12, #62, #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - tbz x12, #62, #-32768 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - tbnz x12, #60, #32764 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - b #4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - b #-4 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - b #134217724 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - br x20 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - 0.50 0.50 - - - - - - blr xzr +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - ret x10 +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - ret +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - eret +# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - - drps diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s index fd2083dc1277a..fbf65e26e99a5 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-clear-upper-regs.s @@ -80,28 +80,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ldr b0, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ldr b0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -156,28 +159,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ldr h0, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ldr h0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -232,28 +238,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ldr s0, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ldr s0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -308,28 +317,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ldr d0, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ldr d0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -384,28 +396,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ldr q0, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ldr q0, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -460,28 +475,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ld1 { v0.8b }, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ld1 { v0.8b }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -536,28 +554,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ld1 { v0.4h }, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ld1 { v0.4h }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -612,28 +633,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ld1 { v0.2s }, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ld1 { v0.2s }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -688,28 +712,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 +# 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: - - - - - - - 0.33 0.33 0.34 - - - - - - 0.25 0.25 0.25 0.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - 0.33 0.33 0.34 - - - - - - - - - - ld1 { v0.1d }, [sp] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# 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.33 0.33 0.34 - - - - - - - - - - ld1 { v0.1d }, [sp] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d # CHECK: Timeline view: # CHECK-NEXT: 01 @@ -764,28 +791,31 @@ add z0.s, z0.s, z0.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.33 1.00 0.33 0.34 +# 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 - - - - - 0.33 1.00 0.33 0.34 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.s, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.33 - 0.33 0.34 add z0.s, z0.s, z0.s +# 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: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.s, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.33 - 0.33 0.34 add z0.s, z0.s, z0.s # CHECK: Timeline view: # CHECK-NEXT: 0123456789 01234 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 a174a1a207eba..68a067eb8a360 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 @@ -2473,1251 +2473,1254 @@ zip2 v0.8h, v0.8h, v0.8h # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# 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: [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: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs d29, d24 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add d17, d31, d29 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.2s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.4h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.8b, 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 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.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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv b0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 addv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese v0.16b, v0.16b -# 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 v0.8b, v0.8b, v0.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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.4h, v0.4h -# 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 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 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 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 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 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 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 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 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - dup v0.2d, x28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - dup v0.2s, w28 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - dup v0.4h, w28 -# 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.25 0.25 0.25 0.25 mov b0, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov d0, v0.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov h0, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov s0, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.16b, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2d, v0.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2s, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4s, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8b, v0.b[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8h, v0.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext v0.16b, v0.16b, v0.16b, #3 -# 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 v0.4s, v0.4s, v0.4s -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.4s, v0.4s -# 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 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 v0.2d, v0.2d, v0.2d -# 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 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 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 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 v0.4s, v0.4s, v0.4s -# 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 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 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.50 - 0.50 - fcvtas d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtau h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtau v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl2 v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl2 v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtms h22, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtms v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtmu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtmu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtns h22, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtns v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtnu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtnu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps s22, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtps h22, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtps v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtpu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtpu v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn s22, d13 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s12, s13 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s21, s12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs h21, h14 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs h21, h12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d, #3 -# 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 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: - - - - - - - - - - - - - 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 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s21, s12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu h12, h13 -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu h21, h12, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d, #3 -# 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 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: - - - - - - - - - - - - - 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 -# CHECK-NEXT: - - - - - - - - - - - - - 5.00 - 5.00 - fdiv v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 6.50 - 6.50 - fdiv v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.4s, v0.4s, v0.4s -# 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 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.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.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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.4s, v0.4s, v0.4s -# 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 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.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 fmla d0, d1, v0.d[1] -# 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 fmls d0, d4, v0.d[1] -# 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 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 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 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 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 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2s, v0.2s -# 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 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.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 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frinta v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frinti v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintm v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintn v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintp v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintx v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2s, v0.2s -# 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 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: - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte v0.8h, v0.8h -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - 7.50 - 7.50 - fsqrt v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 2.50 - 2.50 - fsqrt v0.2s, v0.2s -# 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 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1 { v0.16b }, [x0] -# 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.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.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.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], #4 -# 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], 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 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 { 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: - - - - 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 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [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.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 - mls v0.4h, v0.4h, v0.4h -# 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: - - - - - - - - - - - - - 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] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.d[1], v0.d[1] -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.b[0], w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.h[1], w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.s[2], w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.d[1], x8 -# 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 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 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 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.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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg 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 mov v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v0.8h, #31 -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmull2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.2s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.4h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.8b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.16b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.4s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.8h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v21.8b, v1.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v30.16b, v31.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v0.4h, v9.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v21.8b, v1.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v30.16b, v31.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v4.8h, v7.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v0.16b, v31.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v1.8b, v9.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v13.4h, v21.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v2.8h, v4.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v4.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v6.4s, v8.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.2s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.4h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.8b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.16b, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.4s, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.8h, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saba v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabal2 v0.2d, v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saddlv d0, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saddlv s0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv s0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv h0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 saddlv h0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.8h, v0.8h, v0.8b -# 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: - - - - - - - - - - - - - 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 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s, #3 -# 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: - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v0.8h, v0.8h -# 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.50 - 0.50 shl d7, d10, #12 -# 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.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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.4s, v0.2d, #3 -# 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.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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.8h, v0.8h, #3 -# 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 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 smaxv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv h0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 smaxv s0, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv b0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 sminv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sminv h0, v0.4h -# 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.4s, v0.4h, v0.4h -# 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 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.2d, v0.4s, v0.4s -# 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 v0.4s, v0.4h, v0.4h -# 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 v0.4s, v0.8h, v0.8h -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs h21, h15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs s20, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal d8, s9, v0.s[1] -# 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.4s, v0.8h, v0.8h -# 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.4s, v0.8h, v0.8h -# 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] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh s20, s21, s2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d1, s1, v0.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d15, s22, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s1, h1, v0.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s12, h22, h12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg b19, b14 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg d18, d12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg h21, h15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg s20, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah h0, h1, v2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4h, v1.4h, v2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.8h, v1.8h, v2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah s0, s1, v2.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.2s, v1.2s, v2.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4s, v1.4s, v2.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah h0, h1, h2 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4h, v1.4h, v2.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.8h, v1.8h, v2.8h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah s0, s1, s2 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.2s, v1.2s, v2.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4s, v1.4s, v2.4s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh h0, h1, v2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh s0, s1, v2.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh h0, h1, h2 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.4h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.8h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh s0, s1, s2 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - 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] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh s20, s21, s2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl d31, d31, d31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl h3, h4, h15 -# 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 sqrshrn b10, h13, #2 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn h15, s10, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn s15, d12, #9 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun b17, h10, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun h10, s13, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun s22, d16, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl b11, b19, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl d15, d16, #51 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl d31, d31, d31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl h13, h18, #11 -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu b15, b18, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu d11, d13, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu h19, h17, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu s16, s14, #25 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn b10, h15, #5 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn h17, s10, #4 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn s18, d10, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun b15, h10, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun h20, s14, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun s10, d15, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub s20, s10, s7 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn b18, h18 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn h20, s17 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn s19, d14 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun b19, h14 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun h21, s15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun s20, d12 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri d10, d12, #14 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl d16, d16, d16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr d19, d18, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra d15, d11, #19 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshl d31, d31, d31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.2d, v0.2d, v0.2d -# 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 v0.2d, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v0.4s, v0.8h, #3 -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra d18, d12, #21 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.8h, v0.8h, v0.8b -# 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 { v0.16b }, [x0] -# 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: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] -# 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 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: - - - - - 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: - - - - - 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.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 - - - - - - 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: - - - - - 0.50 0.50 - - - - - - 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd s21, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.16b, { v0.16b, v1.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.8b, { v0.16b, v1.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx v0.16b, { v0.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 tbx v0.16b, { v0.16b, v1.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 1.25 1.25 1.25 1.25 tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx v0.8b, { v0.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 tbx v0.8b, { v0.16b, v1.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 1.25 1.25 1.25 1.25 tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4s, v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabal2 v0.2d, v0.4s, v0.4s -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.1d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv d0, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv s0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv s0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv h0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 uaddlv h0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.8h, v0.8h, v0.8b -# 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: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s, #3 -# 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: - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v0.8h, v0.8h -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv b0, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 umaxv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 umaxv h0, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv h0, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 umaxv s0, v0.4s -# 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 uminp v0.2s, v0.2s, v0.2s -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - 1.00 uminv b0, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uminv h0, v0.4h -# 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 v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.8h, v0.8b, v0.8b -# 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 v0.4s, v0.4h, v0.4h -# 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 v0.4s, v0.8h, v0.8h -# 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 w0, v0.b[1] -# 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 v0.4s, v0.4h, v0.4h -# 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 v0.4s, v0.8h, v0.8h -# 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 v0.8h, v0.8h, v0.8h -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn s10, d10, #25 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.8b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.16b, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.4s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.8h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl b11, b20, b30 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl b18, b15, #6 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl d15, d12, #19 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl h11, h18, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl s14, s19, #18 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl s23, s20, s16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.2d, v0.2d, #3 -# 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn b12, h10, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn h10, s14, #5 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn s10, d12, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.2s, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.4h, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.8b, v0.8h, #3 -# 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 d16, d16, d16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v0.4h, v0.4h, v0.4h -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - urecpe v0.4s, v0.4s -# 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.50 - 0.50 urshl d8, d7, d4 -# 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr d20, d23, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - ursqrte v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra d18, d10, #13 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.4h, v0.4h, #3 -# 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 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 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 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.4h, v0.4h, #3 -# 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 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.25 0.25 0.25 0.25 usqadd b19, b14 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd d18, d22 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd h20, h15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd s21, s12 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra d20, d13, #61 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.16b, v0.16b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2d, v0.2d, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2s, v0.2s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.4h, v0.4h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.4s, v0.4s, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.8b, v0.8b, #3 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.8h, v0.8h, #3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.2d, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.4s, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.8h, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.2d, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.4s, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.8h, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.2d, v0.2d, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.4s, v0.4s, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.8h, v0.8h, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.2d, v0.2d, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.4s, v0.4s, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.8h, v0.8h, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.2s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.4h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.8b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.16b, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.4s, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.8h, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8h, v0.8h, v0.8h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.16b, v0.16b, v0.16b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2d, v0.2d, v0.2d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2s, v0.2s, v0.2s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4h, v0.4h, v0.4h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4s, v0.4s, v0.4s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8b, v0.8b, v0.8b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8h, v0.8h, v0.8h +# 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 abs d29, d24 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add d17, d31, d29 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.2s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.4h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhn v0.8b, 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 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 addv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 addv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese v0.16b, v0.16b +# 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 v0.8b, v0.8b, v0.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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz v0.4h, v0.4h +# 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 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 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 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 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 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 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 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 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - dup v0.2d, x28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - dup v0.2s, w28 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - dup v0.4h, w28 +# 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.25 0.25 0.25 0.25 mov b0, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov d0, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov h0, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov s0, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.16b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2d, v0.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.2s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.4s, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8b, v0.b[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dup v0.8h, v0.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext v0.16b, v0.16b, v0.16b, #3 +# 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 v0.4s, v0.4s, v0.4s +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs v0.4s, v0.4s +# 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 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 v0.2d, v0.2d, v0.2d +# 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 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 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 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 v0.4s, v0.4s, v0.4s +# 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 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 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.50 - 0.50 - fcvtas d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtas v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtas v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtas v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtau h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtau v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtau v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtau v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtl2 v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtl2 v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtms h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtms v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtms v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtms v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtmu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtmu v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtmu v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtmu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtns h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtns v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtns v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtns v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtnu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnu v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnu v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtnu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps s22, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtps h22, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtps v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtps v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtps v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtpu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtpu v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtpu v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtpu v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn s22, d13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s12, s13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs h21, h14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs h21, h12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs v0.2d, v0.2d, #3 +# 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 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: - - - - - - - - - - - - - - - - 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu s21, s12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu h12, h13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu h21, h12, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu v0.2d, v0.2d, #3 +# 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 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: - - - - - - - - - - - - - - - - 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 5.00 - 5.00 - fdiv v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 6.50 - 6.50 - fdiv v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax v0.4s, v0.4s, v0.4s +# 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 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.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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin v0.4s, v0.4s, v0.4s +# 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 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.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 fmla d0, d1, v0.d[1] +# 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 fmls d0, d4, v0.d[1] +# 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 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 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 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 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 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe v0.2s, v0.2s +# 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 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinta v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frinta v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinti v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinti v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frinti v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintm v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintm v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintm v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintn v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintn v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintn v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintp v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintp v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintp v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintx v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintx v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintx v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintz v0.2s, v0.2s +# 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 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: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte v0.8h, v0.8h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 7.50 - 7.50 - fsqrt v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.50 - 2.50 - fsqrt v0.2s, v0.2s +# 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 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1 { v0.16b }, [x0] +# 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.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.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.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], #4 +# 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], 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 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 { 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: - - - - - - - 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 ld4r { v0.1d, v1.1d, v2.1d, v3.1d }, [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.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 - mls v0.4h, v0.4h, v0.4h +# 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: - - - - - - - - - - - - - - - - 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] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov v2.d[1], v0.d[1] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.b[0], w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.h[1], w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.s[2], w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov v0.d[1], x8 +# 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 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 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 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg 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 mov v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr v0.8h, #31 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmull2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.2s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.4h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn v0.8b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.16b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.4s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v21.8b, v1.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev16 v30.16b, v31.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v0.4h, v9.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v21.8b, v1.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v30.16b, v31.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev32 v4.8h, v7.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v0.16b, v31.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v1.8b, v9.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v13.4h, v21.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v2.8h, v4.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v4.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev64 v6.4s, v8.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.2s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.4h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn v0.8b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.16b, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.4s, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhn2 v0.8h, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saba v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabal v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabal2 v0.2d, v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 saddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 saddlv h0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddw v0.8h, v0.8h, v0.8b +# 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: - - - - - - - - - - - - - - - - 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf s22, s13, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf v0.2s, v0.2s, #3 +# 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: - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf v0.8h, v0.8h +# 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.50 - 0.50 shl d7, d10, #12 +# 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrn2 v0.4s, v0.2d, #3 +# 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.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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli v0.8h, v0.8h, #3 +# 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 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 smaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 smaxv s0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 sminv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 sminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sminv h0, v0.4h +# 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.4s, v0.4h, v0.4h +# 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 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlsl2 v0.2d, v0.4s, v0.4s +# 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 v0.4s, v0.4h, v0.4h +# 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 v0.4s, v0.8h, v0.8h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs h21, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs s20, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal d8, s9, v0.s[1] +# 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlal2 v0.4s, v0.8h, v0.8h +# 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlsl2 v0.4s, v0.8h, v0.8h +# 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] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh s20, s21, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d1, s1, v0.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull d15, s22, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s1, h1, v0.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull s12, h22, h12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmull2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg b19, b14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg d18, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg h21, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg s20, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh h0, h1, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh s0, s1, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh h0, h1, h2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4h, v1.4h, v2.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.8h, v1.8h, v2.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh s0, s1, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.2s, v1.2s, v2.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh v0.4s, v1.4s, v2.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - 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] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh s20, s21, s2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl d31, d31, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl h3, h4, h15 +# 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 sqrshrn b10, h13, #2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn h15, s10, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn s15, d12, #9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun b17, h10, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun h10, s13, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun s22, d16, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrun2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl b11, b19, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl d15, d16, #51 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl d31, d31, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl h13, h18, #11 +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu b15, b18, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu d11, d13, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu h19, h17, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu s16, s14, #25 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn b10, h15, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn h17, s10, #4 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn s18, d10, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun b15, h10, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun h20, s14, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun s10, d15, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrun2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub s20, s10, s7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn b18, h18 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn h20, s17 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn s19, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun b19, h14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun h21, s15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun s20, d12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtun2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri d10, d12, #14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl d16, d16, d16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr d19, d18, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra d15, d11, #19 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshl d31, d31, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshl v0.2d, v0.2d, v0.2d +# 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 v0.2d, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshll2 v0.4s, v0.8h, #3 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra d18, d12, #21 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubw v0.8h, v0.8h, v0.8b +# 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 { v0.16b }, [x0] +# 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: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] +# 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 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: - - - - - - - - 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: - - - - - - - - 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.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 - - - - - - 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: - - - - - - - - 0.50 0.50 - - - - - - 1.50 1.50 - - st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd s21, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 - - tbl v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.50 1.50 - - tbl v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx v0.16b, { v0.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 tbx v0.16b, { v0.16b, v1.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 tbx v0.16b, { v0.16b, v1.16b, v2.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.25 1.25 1.25 1.25 tbx v0.16b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx v0.8b, { v0.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 tbx v0.8b, { v0.16b, v1.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 tbx v0.8b, { v0.16b, v1.16b, v2.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.25 1.25 1.25 1.25 tbx v0.8b, { v0.16b, v1.16b, v2.16b, v3.16b }, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 v0.4s, v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabal2 v0.2d, v0.4s, v0.4s +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.1d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.2s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlp v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv d0, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaddlv s0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv s0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 uaddlv h0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 uaddlv h0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddw v0.8h, v0.8h, v0.8b +# 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: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf d21, d14, #64 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf v0.2s, v0.2s, #3 +# 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: - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf v0.8h, v0.8h +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv b0, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 umaxv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv h0, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 umaxv h0, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 umaxv s0, v0.4s +# 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 uminp v0.2s, v0.2s, v0.2s +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - 1.00 uminv b0, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uminv h0, v0.4h +# 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 v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlal v0.8h, v0.8b, v0.8b +# 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 v0.4s, v0.4h, v0.4h +# 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 v0.4s, v0.8h, v0.8h +# 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 w0, v0.b[1] +# 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 v0.4s, v0.4h, v0.4h +# 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 v0.4s, v0.8h, v0.8h +# 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 v0.8h, v0.8h, v0.8h +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn s10, d10, #25 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn v0.8b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.16b, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.4s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrn2 v0.8h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl b11, b20, b30 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl b18, b15, #6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl d15, d12, #19 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl h11, h18, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl s14, s19, #18 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl s23, s20, s16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.2d, v0.2d, #3 +# 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn b12, h10, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn h10, s14, #5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn s10, d12, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.2s, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.4h, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrn v0.8b, v0.8h, #3 +# 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 d16, d16, d16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub v0.4h, v0.4h, v0.4h +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - urecpe v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - urecpe v0.4s, v0.4s +# 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.50 - 0.50 urshl d8, d7, d4 +# 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr d20, d23, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ursqrte v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ursqrte v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra d18, d10, #13 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra v0.4h, v0.4h, #3 +# 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 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 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 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushr v0.4h, v0.4h, #3 +# 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 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.25 0.25 0.25 0.25 usqadd b19, b14 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd d18, d22 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd h20, h15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd s21, s12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra d20, d13, #61 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.16b, v0.16b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2d, v0.2d, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.2s, v0.2s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.4h, v0.4h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.4s, v0.4s, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.8b, v0.8b, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra v0.8h, v0.8h, #3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.2d, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.4s, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl v0.8h, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.2d, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.4s, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubl2 v0.8h, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.2d, v0.2d, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.4s, v0.4s, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw v0.8h, v0.8h, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.2d, v0.2d, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.4s, v0.4s, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubw2 v0.8h, v0.8h, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.2s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.4h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn v0.8b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.16b, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.4s, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 xtn2 v0.8h, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 v0.8h, v0.8h, v0.8h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.16b, v0.16b, v0.16b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2d, v0.2d, v0.2d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.2s, v0.2s, v0.2s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4h, v0.4h, v0.4h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.4s, v0.4s, v0.4s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8b, v0.8b, v0.8b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 v0.8h, v0.8h, v0.8h diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-sve-instructions.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-sve-instructions.s index acd3556824949..6cba45cdd42be 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-sve-instructions.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-sve-instructions.s @@ -6845,3437 +6845,3440 @@ zip2 z31.s, z31.s, z31.s # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - 245.00 651.00 651.00 570.50 272.50 83.75 83.75 81.75 81.75 1536.75 1281.75 794.25 748.25 +# 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: - - - - - - - 245.00 651.00 651.00 570.50 272.50 83.75 83.75 81.75 81.75 1536.75 1281.75 794.25 748.25 # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.b, p0/m, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclb z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclb z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclt z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclt z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z1.s, z2.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.b, p5/m, z21.b, z10.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.b, z10.b, z21.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.d, p5/m, z21.d, z10.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.d, z10.d, z21.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.h, p5/m, z21.h, z10.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.h, z10.h, z21.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.s, p5/m, z21.s, z10.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.s, z10.s, z21.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.b, p3/m, z23.b, z13.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.b, z13.b, z8.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.d, p3/m, z23.d, z13.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.h, p3/m, z23.h, z13.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.h, z13.h, z8.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.s, p3/m, z23.s, z13.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.s, z13.s, z8.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnb z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnb z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnb z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnt z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnt z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnt z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addpl sp, sp, #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addpl x0, x0, #-32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addpl x21, x21, #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addpl x23, x8, #-1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addvl sp, sp, #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addvl x0, x0, #-32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addvl x21, x21, #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - addvl x23, x8, #-1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, lsl #1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, lsl #2] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, lsl #3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw #1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw #2] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw #3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw #1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw #2] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw #3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s, lsl #1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s, lsl #2] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s, lsl #3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd z0.b, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese z0.b, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc z31.b, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - and p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.d, z0.d, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.d, z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.s, z0.s, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.s, z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z23.h, z23.h, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z23.h, z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z5.b, z5.b, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z5.b, z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - ands p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, p0/m, z0.b, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, z1.b, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, p0/m, z0.h, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, z1.h, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, p0/m, z0.s, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, z1.s, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - bcax z29.d, z29.d, z30.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bdep z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bdep z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bdep z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bdep z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bext z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bext z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bext z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bext z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt z0.h, p0/m, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtnt z0.h, p0/m, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot z0.s, z1.h, z2.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot z0.s, z1.h, z2.h[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z0.s, z1.h, z2.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z0.s, z1.h, z2.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z10.s, z21.h, z14.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z21.s, z14.h, z3.h[2] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z2.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z2.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z14.s, z10.h, z21.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla z0.s, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bgrp z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bgrp z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bgrp z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 2.00 - - bgrp z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - bic p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - bic p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - bics p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - bics p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - brka p0.b, p15/m, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - brka p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - brkas p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - brkb p0.b, p15/m, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - brkb p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - brkbs p0.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - brkn p0.b, p15/z, p1.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - brkn p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - brkns p0.b, p15/z, p1.b, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - brkns p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - brkpa p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - brkpa p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - brkpas p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - brkpas p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - brkpb p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - brkpb p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - brkpbs p0.b, p15/z, p1.b, p2.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - brkpbs p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl z0.d, z0.d, z1.d, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl1n z0.d, z0.d, z1.d, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl2n z0.d, z0.d, z1.d, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.b, z0.b, z0.b, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.d, z0.d, z0.d, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.h, z0.h, z0.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.s, z0.s, z0.s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.b, z31.b, z31.b, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.d, z31.d, z31.d, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.h, z31.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.s, z31.s, z31.s, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z15.h[1], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cdot z0.s, z1.b, z31.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cdot z0.s, z1.b, z7.b[3], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z29.d, z30.h, z0.h[0], #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z31.d, z30.h, z7.h[1], #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cdot z5.d, z6.h, z3.h[0], #90 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta b0, p7, b0, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta d0, p7, d0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta h0, p7, h0, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta s0, p7, s0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta w0, p7, w0, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta w0, p7, w0, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta w0, p7, w0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta x0, p7, x0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta z0.b, p7, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta z0.d, p7, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta z0.h, p7, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clasta z0.s, p7, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb b0, p7, b0, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb d0, p7, d0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb h0, p7, h0, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb s0, p7, s0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb w0, p7, w0, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb w0, p7, w0, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb w0, p7, w0, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb x0, p7, x0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb z0.b, p7, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb z0.d, p7, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb z0.h, p7, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - clastb z0.s, p7, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.b, z1.b, z2.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - cmla z0.d, z1.d, z2.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.h, z1.h, z2.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.h, z1.h, z2.h[0], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.s, z1.s, z2.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.s, z1.s, z2.s[0], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z15.b, z16.b, z17.b, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - cmla z15.d, z16.d, z17.d, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z15.h, z16.h, z17.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z15.s, z16.s, z17.s, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z29.b, z30.b, z31.b, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - cmla z29.d, z30.d, z31.d, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z29.h, z30.h, z31.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z29.s, z30.s, z31.s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.b, z31.b, z31.b, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - cmla z31.d, z31.d, z31.d, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.h, z30.h, z7.h[0], #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.h, z31.h, z31.h, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.s, z30.s, z7.s[0], #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.s, z31.s, z31.s, #180 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z1.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #-16 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntb x0, #28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntd x0, #28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cnth x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cnth x0, #28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cnth x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cnth x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntw x0, #28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - cntw x0, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - compact z31.d, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - compact z31.s, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermeq w30, wzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermeq wzr, w30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermeq x30, xzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermeq xzr, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermne w30, wzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermne wzr, w30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermne x30, xzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ctermne xzr, x30 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - decb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decb x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decb x0, vl1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - decd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decd x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decd x0, vl1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - dech x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - dech x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - dech x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - dech x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - dech x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 decp z31.d, p15.d -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 decp z31.h, p15.h -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 decp z31.s, p15.s -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - decw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decw x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decw x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - decw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - eor p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.d, z0.d, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.d, z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.s, z0.s, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.s, z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z23.h, z23.h, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z23.h, z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z5.b, z5.b, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z5.b, z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - eor3 z29.d, z29.d, z30.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - eors p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z0.b, { z1.b, z2.b }, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z31.b, z31.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z31.b, z31.b, z0.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z31.b, { z30.b, z31.b }, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadda d0, p7, d0, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 9.00 - - fadda h0, p7, h0, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 5.00 - - fadda s0, p7, s0, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp z29.s, p3/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 faddv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 faddv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 faddv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z0.d, p0/m, z0.d, z0.d, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z0.h, p0/m, z0.h, z0.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z0.s, p0/m, z0.s, z0.s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z31.d, p7/m, z31.d, z31.d, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z31.h, p7/m, z31.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z31.s, p7/m, z31.s, z31.s, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z1.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z1.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z1.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.d, p0/m, z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.d, p0/m, z1.d, z2.d, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.h, p0/m, z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.h, p0/m, z1.h, z2.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.h, z0.h, z0.h[0], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.s, p0/m, z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.s, p0/m, z1.s, z2.s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z21.s, z10.s, z5.s[1], #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z23.s, z13.s, z8.s[0], #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z29.d, p7/m, z30.d, z31.d, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z29.h, p7/m, z30.h, z31.h, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z29.s, p7/m, z30.s, z31.s, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.d, p7/m, z31.d, z31.d, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.h, p7/m, z31.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.h, z31.h, z7.h[3], #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.s, p7/m, z31.s, z31.s, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmle p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmle p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmle p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmlt p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmlt p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmlt p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmuo p0.d, p0/z, z0.d, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmuo p0.h, p0/z, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - fcmuo p0.s, p0/z, z0.s, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.d, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.h, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvt z0.h, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvt z0.s, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtlt z0.s, p0/m, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtlt z30.d, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnt z0.h, p0/m, z1.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnt z30.s, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtx z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtx z30.s, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxnt z0.s, p0/m, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxnt z30.s, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.d, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs z0.s, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.d, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu z0.s, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 7.00 - 7.00 - fdiv z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 6.00 - 6.00 - fdiv z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 4.50 - 4.50 - fdiv z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 7.00 - 7.00 - fdivr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 6.00 - 6.00 - fdivr z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 4.50 - 4.50 - fdivr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - fexpa z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - fexpa z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - fexpa z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - flogb z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - flogb z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - flogb z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmad z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmad z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmad z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp z29.s, p3/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxnmv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fmaxnmv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxnmv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp z29.s, p3/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fmaxv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.d, p0/m, z0.d, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.h, p0/m, z0.h, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.s, p0/m, z0.s, #0.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp z29.s, p3/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminnmv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fminnmv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminnmv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp z29.s, p3/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fminv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.d, z1.d, z7.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalb z0.s, z1.h, z7.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalb z30.s, z31.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalt z0.s, z1.h, z7.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalt z30.s, z31.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.d, z1.d, z7.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslb z0.s, z1.h, z7.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslb z30.s, z31.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslt z0.s, z1.h, z7.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslt z30.s, z31.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, #-10.00000000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, #0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, p0/m, #-10.00000000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, p0/m, #0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.h, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.h, p0/m, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.s, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.s, p0/m, #-0.12500000 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsb z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsb z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsb z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, z0.d, z0.d[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, z0.h, z0.h[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, z0.s, z0.s[0] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.d, p7/m, z31.d, #2.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.d, z31.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.h, p7/m, z31.h, #2.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.h, z31.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.s, p7/m, z31.s, #2.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.s, z31.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmad z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmad z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmad z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmla z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmla z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmla z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmls z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmls z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmls z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsb z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsb z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsb z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frecpe z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frecpe z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frecpe z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frecpx z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frecpx z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frecpx z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinta z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frinta z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frinta z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frinti z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frinti z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frinti z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintm z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintm z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintm z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintn z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintn z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintn z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintp z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintp z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintp z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintx z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintx z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintx z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frintz z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frintz z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frintz z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fscale z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fscale z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fscale z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 7.00 - 7.00 - fsqrt z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 6.00 - 6.00 - fsqrt z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 4.50 - 4.50 - fsqrt z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.d, p0/m, z0.d, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.h, p0/m, z0.h, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.s, p0/m, z0.s, #0.5 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z31.d, p7/m, z31.d, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z31.h, p7/m, z31.h, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z31.s, p7/m, z31.s, #1.0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftmad z0.d, z0.d, z31.d, #7 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftmad z0.h, z0.h, z31.h, #7 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftmad z0.s, z0.s, z31.s, #7 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftsmul z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftsmul z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftsmul z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftssel z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftssel z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftssel z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 histcnt z0.s, p0/z, z1.s, z2.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 histcnt z29.d, p7/z, z30.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 histseg z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - incb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incb x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incb x0, vl1 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - incd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incd x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incd x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incd z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - inch x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - inch x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - inch x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - inch x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - inch x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 inch z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 inch z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 incp z31.d, p15.d -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 incp z31.h, p15.h -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 incp z31.s, p15.s -# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - incw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incw x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incw x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - incw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incw z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - index z0.b, #0, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - index z0.d, #0, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - index z0.h, #0, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z0.h, w0, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - index z0.s, #0, #0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z21.b, w10, w21 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z21.d, x10, x21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z21.s, w10, w21 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.b, #13, w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.b, w13, #8 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z23.d, #13, x8 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z23.d, x13, #8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.h, #13, w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.h, w13, #8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.s, #13, w8 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.s, w13, #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - index z31.b, #-1, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.b, #-1, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.b, wzr, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.b, wzr, wzr -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - index z31.d, #-1, #-1 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z31.d, #-1, xzr -# CHECK-NEXT: - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z31.d, xzr, #-1 -# CHECK-NEXT: - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z31.d, xzr, xzr -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - index z31.h, #-1, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.h, #-1, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.h, wzr, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.h, wzr, wzr -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - index z31.s, #-1, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.s, #-1, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.s, wzr, #-1 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.s, wzr, wzr -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.b, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.d, x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.h, w0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.s, w0 -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - insr z31.b, b31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.b, wzr -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - insr z31.d, d31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.d, xzr -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - insr z31.h, h31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.h, wzr -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - insr z31.s, s31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.s, wzr -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lasta b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lasta d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lasta h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lasta s0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lasta w0, p7, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lasta w0, p7, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lasta w0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lasta x0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lastb b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lastb d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lastb h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - lastb s0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lastb w0, p7, z31.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lastb w0, p7, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lastb w0, p7, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - 1.00 - - lastb x0, p7, z31.d -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.b }, p0/z, [sp, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.b }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.s }, p5/z, [x10, x21] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z23.d }, p3/z, [x13, x8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.b }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1b { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z5.h }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z23.d }, p3/z, [sp, x8, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z23.d }, p3/z, [x13, x8, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z23.d }, p3/z, [x13, z8.d, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1d { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z31.d }, p7/z, [z31.d, #248] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.s }, p5/z, [x10, x21, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z23.d }, p3/z, [x13, x8, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1h { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z5.h }, p3/z, [sp, x16, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z5.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.b }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.d }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.h }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.s }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rd { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rd { z31.d }, p7/z, [sp, #504] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z31.d }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z31.h }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z31.s }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z0.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z21.b }, p5/z, [x10, #112] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z23.b }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z31.b }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z0.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #112] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z31.d }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z0.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #112] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z31.h }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z0.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #-128] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #112] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z31.s }, p7/z, [sp, #-16] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z31.d }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z31.h }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z31.s }, p7/z, [sp, #63] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z31.d }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z31.s }, p7/z, [sp, #126] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsw { z31.d }, p7/z, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z31.d }, p7/z, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z31.s }, p7/z, [sp, #252] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.h }, p0/z, [sp, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.h }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.s }, p5/z, [x10, x21] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z23.d }, p3/z, [x13, x8] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sb { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.s }, p5/z, [sp, x21, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.s }, p5/z, [x10, x21, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z23.d }, p3/z, [x13, x8, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z23.d }, p3/z, [sp, x8, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z23.d }, p3/z, [x13, x8, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sw { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.s }, p5/z, [sp, x21, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.s }, p5/z, [x10, x21, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z23.d }, p3/z, [x13, x8, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1w { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z31.s }, p7/z, [z31.s, #124] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2b { z0.b, z1.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2b { z0.b, z1.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2b { z21.b, z22.b }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2b { z23.b, z24.b }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2b { z5.b, z6.b }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2d { z0.d, z1.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2d { z0.d, z1.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2d { z21.d, z22.d }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2d { z23.d, z24.d }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2d { z5.d, z6.d }, p3/z, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2h { z0.h, z1.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2h { z0.h, z1.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2h { z21.h, z22.h }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2h { z23.h, z24.h }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2h { z5.h, z6.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2w { z0.s, z1.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2w { z0.s, z1.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2w { z21.s, z22.s }, p5/z, [x10, #10, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2w { z23.s, z24.s }, p3/z, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2w { z5.s, z6.s }, p3/z, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3b { z0.b - z2.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3b { z0.b - z2.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3b { z21.b - z23.b }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3b { z23.b - z25.b }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3b { z5.b - z7.b }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3d { z0.d - z2.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3d { z0.d - z2.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3d { z21.d - z23.d }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3d { z23.d - z25.d }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3d { z5.d - z7.d }, p3/z, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3h { z0.h - z2.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3h { z0.h - z2.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3h { z21.h - z23.h }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3h { z23.h - z25.h }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3h { z5.h - z7.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3w { z0.s - z2.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3w { z0.s - z2.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3w { z21.s - z23.s }, p5/z, [x10, #15, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3w { z23.s - z25.s }, p3/z, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3w { z5.s - z7.s }, p3/z, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4b { z0.b - z3.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4b { z0.b - z3.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4b { z21.b - z24.b }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4b { z23.b - z26.b }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4b { z5.b - z8.b }, p3/z, [x17, x16] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4d { z0.d - z3.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4d { z0.d - z3.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4d { z21.d - z24.d }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4d { z23.d - z26.d }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4d { z5.d - z8.d }, p3/z, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4h { z0.h - z3.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4h { z0.h - z3.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4h { z21.h - z24.h }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4h { z23.h - z26.h }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4h { z5.h - z8.h }, p3/z, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4w { z0.s - z3.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4w { z0.s - z3.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4w { z21.s - z24.s }, p5/z, [x10, #20, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4w { z23.s - z26.s }, p3/z, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4w { z5.s - z8.s }, p3/z, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z0.d }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z0.h }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z0.s }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.b }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1b { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.h }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1d { z0.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z23.d }, p3/z, [x13, z8.d, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1d { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1d { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z31.d }, p7/z, [z31.d, #248] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z0.d }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z0.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z0.s }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z31.h }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z0.d }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z0.h }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z0.s }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sb { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z31.d }, p7/z, [z31.d, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z31.h }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z31.s }, p7/z, [z31.s, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z0.d }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z0.s }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z31.d }, p7/z, [z31.d, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z31.s }, p7/z, [z31.s, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sw { z0.d }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sw { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sw { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z0.d }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.d }, p0/z, [z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z0.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.s }, p0/z, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.s }, p0/z, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.s }, p0/z, [z0.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z23.d }, p3/z, [x13, z8.d, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.d }, p7/z, [sp, z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z31.d }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z31.d }, p7/z, [z31.d, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z31.s }, p7/z, [sp] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z31.s }, p7/z, [z31.s, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.b }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.b }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1d { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1d { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1d { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z21.h }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z31.h }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sw { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sw { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sw { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z21.d }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z21.s }, p5/z, [x10, #5, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z31.d }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z31.s }, p7/z, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z0.b }, p0/z, [x0, x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z0.b }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1b { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1b { z0.s }, p0/z, [z1.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z21.b }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z23.b }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1b { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1b { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1b { z31.s }, p7/z, [z31.s, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1b { z31.s }, p7/z, [z31.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z0.d }, p0/z, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z0.d }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1d { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z21.d }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z23.d }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1d { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1d { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1h { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z0.h }, p0/z, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z0.h }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1h { z0.s }, p0/z, [z1.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z21.h }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z23.h }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1h { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1h { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1h { z31.s }, p7/z, [z31.s, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1h { z31.s }, p7/z, [z31.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sb { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sb { z0.s }, p0/z, [z1.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sb { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sb { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sb { z31.s }, p7/z, [z31.s, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sb { z31.s }, p7/z, [z31.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sh { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sh { z0.s }, p0/z, [z1.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sh { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sh { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sh { z31.s }, p7/z, [z31.s, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sh { z31.s }, p7/z, [z31.s] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sw { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sw { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sw { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1w { z0.d }, p0/z, [z1.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z0.s }, p0/z, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z0.s }, p0/z, [x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1w { z0.s }, p0/z, [z1.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z21.s }, p5/z, [x10, #7, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z23.s }, p3/z, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1w { z31.d }, p7/z, [z31.d, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1w { z31.d }, p7/z, [z31.d] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1w { z31.s }, p7/z, [z31.s, x0] -# CHECK-NEXT: - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1w { z31.s }, p7/z, [z31.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - - - ldr p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - - - ldr p5, [x10, #255, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - - - ldr p7, [x13, #-256, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr z0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr z23, [x13, #255, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr z31, [sp, #-256, mul vl] -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, p0/m, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, p0/m, z0.b, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, z1.b, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.d, p0/m, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, p0/m, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, p0/m, z0.h, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, z1.h, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, p0/m, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, p0/m, z0.s, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, z1.s, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.b, p0/m, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.b, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.d, p0/m, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.d, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.h, p0/m, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.h, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.s, p0/m, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.s, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, p0/m, z0.b, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, z1.b, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, p0/m, z0.h, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, z1.h, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, p0/m, z0.s, z1.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, z1.s, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.b, p7/m, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p15.b, p7/z, z30.b, z31.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p15.h, p7/z, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.b, p7/m, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.d, z1.d, z7.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.b, p7/m, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.d, z1.d, z7.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov p0.b, p0/m, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov p15.b, p15/m, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, b0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, p0/m, b0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.b, p0/m, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, p0/z, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z0.b, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #0xe0000000000003ff -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #0xffffffffffff7fff -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, d0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, p0/m, d0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.d, p0/m, x0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z0.d, x0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #-256 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #32767 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, h0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, p0/m, h0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.h, p0/m, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, p0/z, #32512 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z0.h, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.q, q0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, #0xffff7fff -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, #32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, p0/m, s0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.s, p0/m, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, s0 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z0.s, w0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p15/m, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p15/m, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #32512 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p15/m, #-32768 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.b, p15/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.b, p7/m, b31 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movprfx z31, z6 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.b, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z31.b, wsp -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.b, z31.b[63] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, p15/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, p7/m, d31 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movprfx z31.d, p7/z, z6.d -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.d, p7/m, sp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z31.d, sp -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, z31.d[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.h, p15/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.h, p7/m, h31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.h, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z31.h, wsp -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.h, z31.h[31] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.s, p15/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.s, p7/m, s31 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.s, p7/m, wsp -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - mov z31.s, wsp -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.s, z31.s[15] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, #-1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p0/z, #-1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p0/z, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p0/z, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p15/m, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.d, #-6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.h, #-6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.q, z17.q[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.s, #-6 -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - movs p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - movs p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - movs p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - movs p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mrs x3, ID_AA64ZFR0_EL1 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL1 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL12 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL2 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL3 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.b, p7/m, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.d, p7/m, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.h, p7/m, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.s, p7/m, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - - - - msr ZCR_EL1, x3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - msr ZCR_EL12, x3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - msr ZCR_EL2, x3 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - msr ZCR_EL3, x3 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.b, p7/m, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.b, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mul z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mul z0.d, z1.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.h, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z29.s, z30.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.b, z31.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.b, z31.b, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mul z31.d, z31.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mul z31.d, z31.d, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - mul z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.h, z31.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.h, z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.s, z31.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.s, z31.s, #127 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - nand p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - nand p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - nands p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - nands p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 nbsl z0.d, z0.d, z1.d, z2.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.b, p0/m, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p0.b, p0/z, z0.b, z0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p0.h, p0/z, z0.h, z0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p15.b, p7/z, z30.b, z31.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p15.h, p7/z, z30.h, z31.h -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - nor p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - nor p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - nors p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - nors p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - not p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - not p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - nots p0.b, p0/z, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - nots p15.b, p15/z, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - orn p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - orn p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - orns p0.b, p0/z, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - orns p15.b, p15/z, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - orr p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.d, z0.d, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.d, z0.d, #0xfffffffffffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.s, z0.s, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.s, z0.s, #0xfffffff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z23.h, z23.h, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z23.h, z23.h, #0xfff9 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z5.b, z5.b, #0x6 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z5.b, z5.b, #0xf9 -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - orrs p0.b, p0/z, p0.b, p1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pfalse p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pfirst p0.b, p15, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pfirst p15.b, p15, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmul z0.b, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmul z29.b, z30.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmullb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmullb z29.q, z30.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmullb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmullt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmullt z29.q, z30.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - - 0.50 0.50 pmullt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.b, p15, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.d, p15, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.h, p15, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.s, p15, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - pnext p15.b, p15, p15.b -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #14, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #15, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #6, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #7, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #7, p3, [z13.s, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #7, p3, [z13.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0, z0.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1strm, p0, [x0, #-32, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1strm, p0, [x0, #31, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [x10, z21.d, sxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [x10, z21.s, uxtw] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [z10.d, #31] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [z10.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #14, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.d, #248] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.s, #248] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #6, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #7, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.d, lsl #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.s, sxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.s, uxtw #3] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1strm, p0, [x0, #-32, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1strm, p0, [x0, #31, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #14, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.d, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.s, #62] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #6, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #7, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1keep, p0, [x0, z0.d, lsl #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1strm, p0, [x0, #-32, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1strm, p0, [x0, #31, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.d, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.d, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.s, sxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.s, uxtw #1] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #14, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.d, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.d] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.s, #124] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.s] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #6, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #7, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #7, p3, [x13, z8.d, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1keep, p0, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1keep, p0, [x0, z0.s, uxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1strm, p0, [x0, #-32, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1strm, p0, [x0, #31, mul vl] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3strm, p5, [x10, z21.d, lsl #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3strm, p5, [x10, z21.s, sxtw #2] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl1keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl1strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl2keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl2strm, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl3keep, p0, [x0] -# CHECK-NEXT: - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl3strm, p0, [x0] -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptest p15, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptest p15, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.b, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.d, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.h, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.s, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #15 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #17 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #18 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #19 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #20 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #21 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #22 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #23 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #24 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #25 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #26 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #27 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #28 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, mul3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, mul4 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl128 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl256 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl3 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl4 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl5 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl6 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl64 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl7 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl8 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.b, pow2 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.d, pow2 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.h, pow2 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.s, pow2 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.b -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.d -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.h -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.s -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #14 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #15 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #16 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #17 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #18 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #19 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #20 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #21 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #22 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #23 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #24 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #25 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #26 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #27 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #28 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, mul3 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, mul4 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl1 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl128 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl16 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl2 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl256 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl3 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl32 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl4 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl5 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl6 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl64 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl7 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl8 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - punpkhi p0.h, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - punpkhi p15.h, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - punpklo p0.h, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - punpklo p15.h, p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnb z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnb z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnb z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnt z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnt z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnt z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - rax1 z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - rdffr p0.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - rdffr p0.b, p0/z -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - rdffr p15.b -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - - - - - rdffr p15.b, p15/z -# CHECK-NEXT: - - - - - - - 3.00 1.00 - - - - - - - - rdffrs p0.b, p0/z -# CHECK-NEXT: - - - - - - - 3.00 1.00 - - - - - - - - rdffrs p15.b, p15/z -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rdvl x0, #0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rdvl x21, #-32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rdvl x23, #31 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rdvl xzr, #-1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rev p0.b, p1.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rev p0.d, p1.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rev p0.h, p1.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - rev p0.s, p1.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revb z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revb z0.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revb z0.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revh z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revh z0.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revw z0.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnb z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnb z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnb z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnt z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnt z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnt z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabalb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabalb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabalb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabalt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabalt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sabalt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp z0.h, p0/m, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp z29.s, p0/m, z30.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sadalp z30.d, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlbt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlbt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlbt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 saddv d0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 saddv d0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 saddv d0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwb z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwb z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwb z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwt z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwt z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwt z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclb z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclb z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclt z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclt z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.h, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - scvtf z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - scvtf z0.h, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - scvtf z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 20.00 - - - sdiv z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 11.00 - - - sdiv z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 20.00 - - - sdivr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 11.00 - - - sdivr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sdot z0.d, z1.h, z15.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sdot z0.d, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot z0.s, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot z0.s, z1.b, z7.b[3] -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - sel p0.b, p1, p2.b, p3.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.b, p11, z13.b, z8.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.d, p11, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.h, p11, z13.h, z8.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.s, p11, z13.s, z8.s -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - setffr -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.b, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.d, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.h, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.s, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - sm4e z0.s, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - sm4ekey z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.b, z0.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.d, z0.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.h, z0.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.s, z0.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.b, z31.b, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.d, z31.d, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.h, z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.s, z31.s, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 smaxv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 smaxv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 smaxv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 smaxv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.b, z0.b, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.d, z0.d, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.h, z0.h, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.s, z0.s, #-128 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.b, z31.b, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.d, z31.d, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.h, z31.h, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.s, z31.s, #127 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 sminv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 sminv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 sminv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 sminv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla z0.s, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.b, p7/m, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.b, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - smulh z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.h, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smulh z29.s, z30.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - smulh z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - smullt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z29.b, p7, { z30.b, z31.b } -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z29.d, p7, { z30.d, z31.d } -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z29.h, p7, { z30.h, z31.h } -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z29.s, p7, { z30.s, z31.s } -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z31.b, p7, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z31.d, p7, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z31.h, p7, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 1.00 - - splice z31.s, p7, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.b, z0.b, z0.b, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.d, z0.d, z0.d, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.h, z0.h, z0.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.s, z0.s, z0.s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.b, z31.b, z31.b, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.d, z31.d, z31.d, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.h, z31.h, z31.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.s, z31.s, z31.s, #270 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.b, wzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.d, wzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.h, wzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.s, wzr -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqdecp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqdecp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqdecp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.d, z1.s, z15.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalbt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalbt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalbt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.d, z1.s, z15.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.d, z1.s, z15.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslbt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslbt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslbt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.d, z1.s, z15.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.b, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqdmulh z0.d, z1.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.h, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z29.s, z30.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqdmulh z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.b, wzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.d, wzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.h, wzr -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.s, wzr -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqincp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqincp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqincp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.b, p7/m, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.b, z1.b, z2.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z0.d, z1.d, z2.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.h, z1.h, z2.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.h, z1.h, z2.h[0], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.s, z1.s, z2.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.s, z1.s, z2.s[0], #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z15.b, z16.b, z17.b, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z15.d, z16.d, z17.d, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z15.h, z16.h, z17.h, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z15.s, z16.s, z17.s, #270 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z29.b, z30.b, z31.b, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z29.d, z30.d, z31.d, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z29.h, z30.h, z31.h, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z29.s, z30.s, z31.s, #90 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.b, z31.b, z31.b, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z31.d, z31.d, z31.d, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.h, z30.h, z7.h[0], #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.h, z31.h, z31.h, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.s, z30.s, z7.s[0], #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.s, z31.s, z31.s, #180 -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah z0.d, z1.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh z0.d, z1.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.b, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmulh z0.d, z1.d, z15.d[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.h, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.h, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.s, z1.s, z7.s[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z29.s, z30.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmulh z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.b, p0/m, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.d, p0/m, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.h, p0/m, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.s, p0/m, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.b, p0/m, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.d, p0/m, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.h, p0/m, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.s, p0/m, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.b, p0/m, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.d, p0/m, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.h, p0/m, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.s, p0/m, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.b, p0/m, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.d, p0/m, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.h, p0/m, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.s, p0/m, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnb z0.b, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnb z0.h, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnb z0.s, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnt z0.b, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnt z0.h, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnt z0.s, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunb z0.b, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunb z0.h, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunb z0.s, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunt z0.b, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunt z0.h, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunt z0.s, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshl z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z0.d, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z0.h, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z0.s, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z31.d, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z31.h, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z31.s, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z0.d, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z0.h, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z0.s, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z31.d, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z31.h, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z31.s, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublbt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublbt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublbt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubltb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubltb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubltb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwb z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwb z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwb z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwt z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwt z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwt z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.b }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.d }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.h }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.s }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z0.s }, p0, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z0.s }, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z0.s }, p7, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.b }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.h }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.s }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.b }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z31.d }, p7, [z31.d, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.h }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.s }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z31.s }, p7, [z31.s, #31] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z0.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, lsl #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, sxtw #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, uxtw #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z31.d }, p7, [z31.d, #248] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.50 0.50 - - st1h { z0.d }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, lsl #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, sxtw #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, uxtw #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.50 0.50 - - st1h { z0.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z0.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.50 0.50 - - st1h { z0.s }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, sxtw #1] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, uxtw #1] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p7, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z21.h }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z21.s }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z31.d }, p7, [z31.d, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z31.h }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z31.s }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z31.s }, p7, [z31.s, #62] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.d }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, lsl #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, sxtw #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, sxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, uxtw #2] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, uxtw] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p7, [z0.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, sxtw #2] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, sxtw] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, uxtw #2] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, uxtw] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p7, [z0.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z21.d }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z21.s }, p5, [x10, #5, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z31.d }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z31.d }, p7, [z31.d, #124] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z31.s }, p7, [sp, #-1, mul vl] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z31.s }, p7, [z31.s, #124] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2b { z0.b, z1.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2b { z0.b, z1.b }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2b { z21.b, z22.b }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2b { z23.b, z24.b }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2b { z5.b, z6.b }, p3, [x17, x16] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2d { z0.d, z1.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2d { z0.d, z1.d }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2d { z21.d, z22.d }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2d { z23.d, z24.d }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2d { z5.d, z6.d }, p3, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 1.00 1.00 - - 0.50 0.50 0.50 0.50 1.00 1.00 - - st2h { z0.h, z1.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2h { z0.h, z1.h }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2h { z21.h, z22.h }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2h { z23.h, z24.h }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - 0.50 0.50 0.50 0.50 1.00 1.00 - - st2h { z5.h, z6.h }, p3, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2w { z0.s, z1.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2w { z0.s, z1.s }, p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2w { z21.s, z22.s }, p5, [x10, #10, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2w { z23.s, z24.s }, p3, [x13, #-16, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2w { z5.s, z6.s }, p3, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3b { z0.b - z2.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3b { z0.b - z2.b }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3b { z21.b - z23.b }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3b { z23.b - z25.b }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3b { z5.b - z7.b }, p3, [x17, x16] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3d { z0.d - z2.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3d { z0.d - z2.d }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3d { z21.d - z23.d }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3d { z23.d - z25.d }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3d { z5.d - z7.d }, p3, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3h { z0.h - z2.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3h { z0.h - z2.h }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3h { z21.h - z23.h }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3h { z23.h - z25.h }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3h { z5.h - z7.h }, p3, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3w { z0.s - z2.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3w { z0.s - z2.s }, p0, [x0] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3w { z21.s - z23.s }, p5, [x10, #15, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3w { z23.s - z25.s }, p3, [x13, #-24, mul vl] -# CHECK-NEXT: - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3w { z5.s - z7.s }, p3, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4b { z0.b - z3.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4b { z0.b - z3.b }, p0, [x0] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4b { z21.b - z24.b }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4b { z23.b - z26.b }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4b { z5.b - z8.b }, p3, [x17, x16] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4d { z0.d - z3.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4d { z0.d - z3.d }, p0, [x0] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4d { z21.d - z24.d }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4d { z23.d - z26.d }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4d { z5.d - z8.d }, p3, [x17, x16, lsl #3] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4h { z0.h - z3.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4h { z0.h - z3.h }, p0, [x0] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4h { z21.h - z24.h }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4h { z23.h - z26.h }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4h { z5.h - z8.h }, p3, [x17, x16, lsl #1] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4w { z0.s - z3.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4w { z0.s - z3.s }, p0, [x0] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4w { z21.s - z24.s }, p5, [x10, #20, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4w { z23.s - z26.s }, p3, [x13, #-32, mul vl] -# CHECK-NEXT: - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4w { z5.s - z8.s }, p3, [x17, x16, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0, x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1b { z0.d }, p0, [z1.d] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1b { z0.s }, p0, [z1.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z21.b }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z23.b }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1b { z31.d }, p7, [z31.d, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1b { z31.d }, p7, [z31.d] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1b { z31.s }, p7, [z31.s, x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1b { z31.s }, p7, [z31.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0, x0, lsl #3] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1d { z0.d }, p0, [z1.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z21.d }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z23.d }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1d { z31.d }, p7, [z31.d, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1d { z31.d }, p7, [z31.d] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1h { z0.d }, p0, [z1.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0, x0, lsl #1] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1h { z0.s }, p0, [z1.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1h { z21.h }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1h { z23.h }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1h { z31.d }, p7, [z31.d, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1h { z31.d }, p7, [z31.d] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1h { z31.s }, p7, [z31.s, x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1h { z31.s }, p7, [z31.s] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1w { z0.d }, p0, [z1.d] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0, x0, lsl #2] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1w { z0.s }, p0, [z1.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z21.s }, p5, [x10, #7, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z23.s }, p3, [x13, #-8, mul vl] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1w { z31.d }, p7, [z31.d, x0] -# CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1w { z31.d }, p7, [z31.d] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1w { z31.s }, p7, [z31.s, x0] -# CHECK-NEXT: - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1w { z31.s }, p7, [z31.s] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - str p0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - str p15, [sp, #-256, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - str p5, [x10, #255, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str z0, [x0] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str z21, [x10, #-256, mul vl] -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str z31, [sp, #255, mul vl] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.b, p5/m, z21.b, z10.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.b, z10.b, z21.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.d, p5/m, z21.d, z10.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.d, z10.d, z21.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.h, p5/m, z21.h, z10.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.h, z10.h, z21.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.s, p5/m, z21.s, z10.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.s, z10.s, z21.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.b, p3/m, z23.b, z13.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.b, z13.b, z8.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.d, p3/m, z23.d, z13.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.d, z13.d, z8.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.h, p3/m, z23.h, z13.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.h, z13.h, z8.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.s, p3/m, z23.s, z13.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.s, z13.s, z8.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnb z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnb z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnb z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnt z0.b, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnt z0.h, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnt z0.s, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.b, p0/m, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.d, p0/m, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.h, p0/m, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.s, p0/m, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpkhi z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpkhi z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpkhi z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpklo z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpklo z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpklo z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxth z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxth z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxth z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxth z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtw z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 sxtw z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.b, { z29.b, z30.b }, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.d, { z29.d, z30.d }, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.h, { z29.h, z30.h }, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.s, { z29.s, z30.s }, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.b, { z31.b }, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.d, { z31.d }, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.h, { z31.h }, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.s, { z31.s }, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.b, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.d, z1.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.h, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.s, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabalb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabalb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabalb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabalt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabalt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uabalt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp z0.h, p0/m, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp z29.s, p0/m, z30.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uadalp z30.d, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 uaddv d0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 uaddv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uaddv d0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uaddv d0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwb z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwb z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwb z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwt z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwt z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwt z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.d, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.h, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf z0.h, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.s, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 20.00 - - - udiv z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 11.00 - - - udiv z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 20.00 - - - udivr z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 11.00 - - - udivr z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - udot z0.d, z1.h, z15.h[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - udot z0.d, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot z0.s, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot z0.s, z1.b, z7.b[3] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 umaxv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 umaxv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 umaxv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 umaxv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.b, p7/m, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.d, p7/m, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.h, p7/m, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.s, p7/m, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 uminv b0, p7, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 uminv d0, p7, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uminv h0, p7, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uminv s0, p7, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.d, z1.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.h, z1.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.s, z1.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla z0.s, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.b, p7/m, z0.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.b, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - umulh z0.d, p7/m, z0.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.h, p7/m, z0.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.h, z1.h, z2.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.s, p7/m, z0.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umulh z29.s, z30.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - umulh z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullb z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullb z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullt z0.d, z1.s, z15.s[1] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullt z0.s, z1.h, z7.h[7] -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.50 - 0.50 - umullt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqdecp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqdecp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqdecp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, vl1 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.s -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqincp z0.d, p0.d -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqincp z0.h, p0.h -# CHECK-NEXT: - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqincp z0.s, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0, pow2, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, #14 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, all, mul #16 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, pow2 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, vl1 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s, all, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s, pow2 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s, pow2, mul #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.b, p0/m, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.d, p0/m, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.h, p0/m, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.s, p0/m, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.b, p0/m, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.d, p0/m, z31.d, #63 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.h, p0/m, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.s, p0/m, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z0.b, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z0.h, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z0.s, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z31.b, z31.h, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z31.h, z31.s, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z31.s, z31.d, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.b, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.d, z0.d, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.d, z0.d, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, z0.h, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.s, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.s, z0.s, #0, lsl #8 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.b, z31.b, #255 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.d, z31.d, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.h, z31.h, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.s, z31.s, #65280 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnb z0.b, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnb z0.h, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnb z0.s, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnt z0.b, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnt z0.h, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnt z0.s, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - urecpe z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshl z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshl z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshl z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshl z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.b, p0/m, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.d, p0/m, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.h, p0/m, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.s, p0/m, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.b, p0/m, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.d, p0/m, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.h, p0/m, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.s, p0/m, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - ursqrte z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z0.d, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z0.h, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z0.s, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z31.d, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z31.h, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z31.s, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z0.d, z0.s, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z0.h, z0.b, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z0.s, z0.h, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z31.d, z31.s, #31 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z31.h, z31.b, #7 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z31.s, z31.h, #15 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla z0.s, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z0.b, p0/m, z0.b, z1.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z0.h, p0/m, z0.h, z1.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z29.s, p7/m, z29.s, z30.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z31.d, p7/m, z31.d, z30.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.b, z0.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.d, z0.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.h, z0.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.s, z0.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.b, z31.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.d, z31.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.h, z31.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.s, z31.s, #32 -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublb z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublb z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublb z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublt z0.h, z1.b, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublt z29.s, z30.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublt z31.d, z31.s, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwb z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwb z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwb z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwt z0.h, z1.h, z2.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwt z29.s, z30.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwt z31.d, z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpkhi z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpkhi z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpkhi z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpklo z31.d, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpklo z31.h, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpklo z31.s, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z0.h, p0/m, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z31.h, p7/m, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxth z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxth z0.s, p0/m, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxth z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxth z31.s, p7/m, z31.s -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtw z0.d, p0/m, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - - 0.50 - 0.50 uxtw z31.d, p7/m, z31.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, w0, wzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, wzr, w0 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, x0, xzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, xzr, x0 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.d, w0, wzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.d, x0, xzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.h, w0, wzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.h, x0, xzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.s, w0, wzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.s, x0, xzr -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.b, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.d, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.h, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.s, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.b, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.d, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.h, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.s, x30, x30 -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - wrffr p0.b -# CHECK-NEXT: - - - - - - - 1.00 - - - - - - - - - wrffr p15.b -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z0.b, z0.b, z1.b, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z0.d, z0.d, z1.d, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z0.h, z0.h, z1.h, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z0.s, z0.s, z1.s, #1 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z31.b, z31.b, z30.b, #8 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z31.d, z31.d, z30.d, #64 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z31.h, z31.h, z30.h, #16 -# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - - - xar z31.s, z31.s, z30.s, #32 -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.b, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.d, p0.d, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.h, p0.h, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.s, p0.s, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.s, z31.s, z31.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.b, p0.b, p0.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.d, p0.d, p0.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.h, p0.h, p0.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.s, p0.s, p0.s -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.b, p15.b, p15.b -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.d, p15.d, p15.d -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.h, p15.h, p15.h -# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.s, p15.s, p15.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.b, z0.b, z0.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.d, z0.d, z0.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.h, z0.h, z0.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.s, z0.s, z0.s -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.b, z31.b, z31.b -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.d, z31.d, z31.d -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.h, z31.h, z31.h -# CHECK-NEXT: - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.s, z31.s, z31.s +# 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 abs z0.b, p0/m, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 abs z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclb z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclb z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclt z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adclt z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z0.s, z1.s, z2.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.b, p5/m, z21.b, z10.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.b, z10.b, z21.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.d, p5/m, z21.d, z10.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.d, z10.d, z21.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.h, p5/m, z21.h, z10.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.h, z10.h, z21.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.s, p5/m, z21.s, z10.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z21.s, z10.s, z21.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.b, p3/m, z23.b, z13.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.b, z13.b, z8.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.d, p3/m, z23.d, z13.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.h, p3/m, z23.h, z13.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.h, z13.h, z8.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.s, p3/m, z23.s, z13.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z23.s, z13.s, z8.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 add z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnb z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnb z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnb z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnt z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnt z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addhnt z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 addp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addpl sp, sp, #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addpl x0, x0, #-32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addpl x21, x21, #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addpl x23, x8, #-1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addvl sp, sp, #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addvl x0, x0, #-32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addvl x21, x21, #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - addvl x23, x8, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, lsl #1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, lsl #2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, lsl #3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.d, [z0.d, z0.d] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s, lsl #1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s, lsl #2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s, lsl #3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 adr z0.s, [z0.s, z0.s] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesd z0.b, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aese z0.b, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesimc z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 aesmc z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - and p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.d, z0.d, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.d, z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.s, z0.s, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z0.s, z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z23.h, z23.h, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z23.h, z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z5.b, z5.b, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 and z5.b, z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - ands p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 andv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, p0/m, z0.b, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.b, z1.b, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, p0/m, z0.h, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.h, z1.h, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, p0/m, z0.s, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z0.s, z1.s, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asr z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrd z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 asrr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - bcax z29.d, z29.d, z30.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bdep z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bdep z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bdep z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bdep z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bext z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bext z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bext z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bext z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvt z0.h, p0/m, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - bfcvtnt z0.h, p0/m, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot z0.s, z1.h, z2.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfdot z0.s, z1.h, z2.h[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z0.s, z1.h, z2.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z0.s, z1.h, z2.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z10.s, z21.h, z14.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalb z21.s, z14.h, z3.h[2] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z2.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z2.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmlalt z14.s, z10.h, z21.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bfmmla z0.s, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bgrp z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bgrp z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bgrp z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 2.00 - - bgrp z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - bic p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - bic p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bic z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - bics p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - bics p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - brka p0.b, p15/m, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - brka p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - brkas p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - brkb p0.b, p15/m, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - brkb p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - brkbs p0.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - brkn p0.b, p15/z, p1.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - brkn p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - brkns p0.b, p15/z, p1.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - brkns p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - brkpa p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - brkpa p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - brkpas p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - brkpas p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - brkpb p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - brkpb p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - brkpbs p0.b, p15/z, p1.b, p2.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - brkpbs p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl z0.d, z0.d, z1.d, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl1n z0.d, z0.d, z1.d, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 bsl2n z0.d, z0.d, z1.d, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.b, z0.b, z0.b, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.d, z0.d, z0.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.h, z0.h, z0.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z0.s, z0.s, z0.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.b, z31.b, z31.b, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.d, z31.d, z31.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.h, z31.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cadd z31.s, z31.s, z31.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z15.h[1], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z0.d, z1.h, z31.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cdot z0.s, z1.b, z31.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cdot z0.s, z1.b, z7.b[3], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z29.d, z30.h, z0.h[0], #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z31.d, z30.h, z7.h[1], #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cdot z5.d, z6.h, z3.h[0], #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta b0, p7, b0, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta d0, p7, d0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta h0, p7, h0, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta s0, p7, s0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta w0, p7, w0, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta w0, p7, w0, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta w0, p7, w0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clasta x0, p7, x0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta z0.b, p7, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta z0.d, p7, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta z0.h, p7, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clasta z0.s, p7, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb b0, p7, b0, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb d0, p7, d0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb h0, p7, h0, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb s0, p7, s0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb w0, p7, w0, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb w0, p7, w0, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb w0, p7, w0, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 0.50 - - clastb x0, p7, x0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb z0.b, p7, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb z0.d, p7, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb z0.h, p7, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - clastb z0.s, p7, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cls z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 clz z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.b, z1.b, z2.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - cmla z0.d, z1.d, z2.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.h, z1.h, z2.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.h, z1.h, z2.h[0], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.s, z1.s, z2.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z0.s, z1.s, z2.s[0], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z15.b, z16.b, z17.b, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - cmla z15.d, z16.d, z17.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z15.h, z16.h, z17.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z15.s, z16.s, z17.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z29.b, z30.b, z31.b, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - cmla z29.d, z30.d, z31.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z29.h, z30.h, z31.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z29.s, z30.s, z31.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.b, z31.b, z31.b, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - cmla z31.d, z31.d, z31.d, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.h, z30.h, z7.h[0], #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.h, z31.h, z31.h, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.s, z30.s, z7.s[0], #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - cmla z31.s, z31.s, z31.s, #180 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpeq p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpge p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpgt p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphi p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.b, p0/z, z1.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmphs p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmple p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplo p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.d, p0/z, z0.d, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpls p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmplt p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.b, p0/z, z0.b, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.d, p0/z, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #-16 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 1.00 - - - cmpne p0.s, p0/z, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnot z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 cnt z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntb x0, #28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntd x0, #28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cnth x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cnth x0, #28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cnth x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cnth x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntp x0, p15, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntw x0, #28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - cntw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - compact z31.d, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - compact z31.s, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermeq w30, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermeq wzr, w30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermeq x30, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermeq xzr, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermne w30, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermne wzr, w30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermne x30, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ctermne xzr, x30 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - decb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - decd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - dech x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - dech x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - dech x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - dech x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - dech x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decp xzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 decp z31.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 decp z31.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 decp z31.s, p15.s +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - decw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - decw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 dupm z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - eor p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.d, z0.d, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.d, z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.s, z0.s, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z0.s, z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z23.h, z23.h, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z23.h, z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z5.b, z5.b, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eor z5.b, z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - eor3 z29.d, z29.d, z30.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eorbt z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - eors p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 eortb z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 eorv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z0.b, { z1.b, z2.b }, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z31.b, z31.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z31.b, z31.b, z0.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ext z31.b, { z30.b, z31.b }, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabd z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fabs z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facge p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facge p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facge p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facgt p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facgt p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - facgt p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadd z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fadda d0, p7, d0, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 9.00 - - fadda h0, p7, h0, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 5.00 - - fadda s0, p7, s0, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp z29.s, p3/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 faddp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 faddv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 faddv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 faddv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z0.d, p0/m, z0.d, z0.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z0.h, p0/m, z0.h, z0.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z0.s, p0/m, z0.s, z0.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z31.d, p7/m, z31.d, z31.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z31.h, p7/m, z31.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcadd z31.s, p7/m, z31.s, z31.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmeq p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmge p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.d, p0/z, z1.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.h, p0/z, z1.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmgt p0.s, p0/z, z1.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.d, p0/m, z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.d, p0/m, z1.d, z2.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.h, p0/m, z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.h, p0/m, z1.h, z2.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.h, z0.h, z0.h[0], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.s, p0/m, z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z0.s, p0/m, z1.s, z2.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z21.s, z10.s, z5.s[1], #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z23.s, z13.s, z8.s[0], #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z29.d, p7/m, z30.d, z31.d, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z29.h, p7/m, z30.h, z31.h, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z29.s, p7/m, z30.s, z31.s, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.d, p7/m, z31.d, z31.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.h, p7/m, z31.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.h, z31.h, z7.h[3], #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fcmla z31.s, p7/m, z31.s, z31.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmle p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmle p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmle p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmlt p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmlt p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmlt p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmne p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmne p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmne p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmuo p0.d, p0/z, z0.d, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmuo p0.h, p0/z, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - fcmuo p0.s, p0/z, z0.s, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.d, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.h, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvt z0.h, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvt z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvt z0.s, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtlt z0.s, p0/m, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtlt z30.d, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtnt z0.h, p0/m, z1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtnt z30.s, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtx z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtx z30.s, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxnt z0.s, p0/m, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtxnt z30.s, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.d, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzs z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzs z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs z0.s, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzs z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.d, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - fcvtzu z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - fcvtzu z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu z0.s, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - fcvtzu z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 7.00 - 7.00 - fdiv z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 6.00 - 6.00 - fdiv z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.50 - 4.50 - fdiv z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 7.00 - 7.00 - fdivr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 6.00 - 6.00 - fdivr z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.50 - 4.50 - fdivr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - fexpa z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - fexpa z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - fexpa z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - flogb z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - flogb z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - flogb z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmad z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmad z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmad z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmax z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnm z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp z29.s, p3/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxnmp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxnmv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fmaxnmv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxnmv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp z29.s, p3/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmaxp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fmaxv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fmaxv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fmaxv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmin z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.d, p0/m, z0.d, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.h, p0/m, z0.h, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.s, p0/m, z0.s, #0.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnm z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp z29.s, p3/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminnmp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminnmv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fminnmv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminnmv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp z29.s, p3/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fminp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 fminv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 1.00 1.00 1.00 fminv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.75 0.75 0.75 0.75 fminv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.d, z1.d, z7.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmla z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalb z0.s, z1.h, z7.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalb z30.s, z31.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalt z0.s, z1.h, z7.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlalt z30.s, z31.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.d, z1.d, z7.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmls z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslb z0.s, z1.h, z7.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslb z30.s, z31.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslt z0.s, z1.h, z7.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmlslt z30.s, z31.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, #-10.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, #0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, p0/m, #-10.00000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.d, p0/m, #0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.h, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.h, p0/m, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.s, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmov z0.s, p0/m, #-0.12500000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsb z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsb z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmsb z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, z0.d, z0.d[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, z0.h, z0.h[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, z0.s, z0.s[0] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.d, p7/m, z31.d, #2.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.d, z31.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.h, p7/m, z31.h, #2.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.h, z31.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.s, p7/m, z31.s, #2.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmul z31.s, z31.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fmulx z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fneg z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmad z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmad z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmad z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmla z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmla z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmla z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmls z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmls z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmls z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsb z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsb z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fnmsb z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpe z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frecpe z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frecpe z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frecps z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frecpx z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frecpx z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frecpx z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinta z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frinta z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinta z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frinti z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frinti z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frinti z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintm z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintm z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintm z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintn z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintn z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintn z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintp z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintp z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintp z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintx z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintx z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintx z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frintz z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frintz z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frintz z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - frsqrte z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - frsqrte z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - frsqrte z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 frsqrts z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fscale z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fscale z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fscale z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 7.00 - 7.00 - fsqrt z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 6.00 - 6.00 - fsqrt z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 4.50 - 4.50 - fsqrt z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsub z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.d, p0/m, z0.d, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.h, p0/m, z0.h, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.s, p0/m, z0.s, #0.5 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z31.d, p7/m, z31.d, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z31.h, p7/m, z31.h, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 fsubr z31.s, p7/m, z31.s, #1.0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftmad z0.d, z0.d, z31.d, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftmad z0.h, z0.h, z31.h, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftmad z0.s, z0.s, z31.s, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftsmul z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftsmul z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftsmul z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftssel z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftssel z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ftssel z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 histcnt z0.s, p0/z, z1.s, z2.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 histcnt z29.d, p7/z, z30.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 histseg z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - incb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - incd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - inch x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - inch x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - inch x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - inch x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - inch x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 inch z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 inch z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incp xzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 incp z31.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 incp z31.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 incp z31.s, p15.s +# CHECK-NEXT: - - - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - incw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - incw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 incw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - index z0.b, #0, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - index z0.d, #0, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - index z0.h, #0, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z0.h, w0, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - index z0.s, #0, #0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z21.b, w10, w21 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z21.d, x10, x21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z21.s, w10, w21 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.b, #13, w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.b, w13, #8 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z23.d, #13, x8 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z23.d, x13, #8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.h, #13, w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.h, w13, #8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.s, #13, w8 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z23.s, w13, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - index z31.b, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.b, #-1, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.b, wzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.b, wzr, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - index z31.d, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z31.d, #-1, xzr +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z31.d, xzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 2.00 - - - - - 1.00 - 1.00 - index z31.d, xzr, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - index z31.h, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.h, #-1, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.h, wzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.h, wzr, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - index z31.s, #-1, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.s, #-1, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.s, wzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.50 - 0.50 - index z31.s, wzr, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.b, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.d, x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.h, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z0.s, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - insr z31.b, b31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.b, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - insr z31.d, d31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.d, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - insr z31.h, h31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.h, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - insr z31.s, s31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - insr z31.s, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lasta b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lasta d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lasta h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lasta s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lasta w0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lasta w0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lasta w0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lasta x0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lastb b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lastb d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lastb h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - lastb s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lastb w0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lastb w0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lastb w0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - 1.00 - - lastb x0, p7, z31.d +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.b }, p0/z, [sp, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.b }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1b { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z21.s }, p5/z, [x10, x21] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z23.d }, p3/z, [x13, x8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.b }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1b { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1b { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1b { z5.h }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1d { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z23.d }, p3/z, [sp, x8, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z23.d }, p3/z, [x13, x8, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z23.d }, p3/z, [x13, z8.d, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1d { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1d { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1d { z31.d }, p7/z, [z31.d, #248] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1h { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z21.s }, p5/z, [x10, x21, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z23.d }, p3/z, [x13, x8, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1h { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1h { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z5.h }, p3/z, [sp, x16, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1h { z5.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.b }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.d }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.h }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rb { z31.s }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rd { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rd { z31.d }, p7/z, [sp, #504] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z31.d }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z31.h }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rh { z31.s }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z0.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z21.b }, p5/z, [x10, #112] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z23.b }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqb { z31.b }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z0.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z23.d }, p3/z, [x13, #112] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqd { z31.d }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z0.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z23.h }, p3/z, [x13, #112] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqh { z31.h }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z0.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #-128] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z23.s }, p3/z, [x13, #112] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rqw { z31.s }, p7/z, [sp, #-16] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z31.d }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z31.h }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsb { z31.s }, p7/z, [sp, #63] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z31.d }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsh { z31.s }, p7/z, [sp, #126] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rsw { z31.d }, p7/z, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z31.d }, p7/z, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1rw { z31.s }, p7/z, [sp, #252] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.h }, p0/z, [sp, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.h }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sb { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z21.s }, p5/z, [x10, x21] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z23.d }, p3/z, [x13, x8] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sb { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sb { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sb { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sh { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.s }, p5/z, [sp, x21, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z21.s }, p5/z, [x10, x21, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z23.d }, p3/z, [x13, x8, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sh { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sh { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sh { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sw { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z23.d }, p3/z, [sp, x8, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z23.d }, p3/z, [x13, x8, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1sw { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1sw { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1sw { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1w { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.s }, p5/z, [sp, x21, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z21.s }, p5/z, [x10, x21, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z23.d }, p3/z, [x13, x8, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ld1w { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ld1w { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ld1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ld1w { z31.s }, p7/z, [z31.s, #124] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2b { z0.b, z1.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2b { z0.b, z1.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2b { z21.b, z22.b }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2b { z23.b, z24.b }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2b { z5.b, z6.b }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2d { z0.d, z1.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2d { z0.d, z1.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2d { z21.d, z22.d }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2d { z23.d, z24.d }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2d { z5.d, z6.d }, p3/z, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2h { z0.h, z1.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2h { z0.h, z1.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2h { z21.h, z22.h }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2h { z23.h, z24.h }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2h { z5.h, z6.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2w { z0.s, z1.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2w { z0.s, z1.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2w { z21.s, z22.s }, p5/z, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 0.50 0.50 0.50 0.50 ld2w { z23.s, z24.s }, p3/z, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - 0.50 0.50 0.50 0.50 0.50 0.50 0.50 0.50 ld2w { z5.s, z6.s }, p3/z, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3b { z0.b - z2.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3b { z0.b - z2.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3b { z21.b - z23.b }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3b { z23.b - z25.b }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3b { z5.b - z7.b }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3d { z0.d - z2.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3d { z0.d - z2.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3d { z21.d - z23.d }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3d { z23.d - z25.d }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3d { z5.d - z7.d }, p3/z, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3h { z0.h - z2.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3h { z0.h - z2.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3h { z21.h - z23.h }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3h { z23.h - z25.h }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3h { z5.h - z7.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3w { z0.s - z2.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3w { z0.s - z2.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3w { z21.s - z23.s }, p5/z, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - - - - - 0.75 0.75 0.75 0.75 ld3w { z23.s - z25.s }, p3/z, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - 1.00 1.00 1.00 - - 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ld3w { z5.s - z7.s }, p3/z, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4b { z0.b - z3.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4b { z0.b - z3.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4b { z21.b - z24.b }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4b { z23.b - z26.b }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4b { z5.b - z8.b }, p3/z, [x17, x16] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4d { z0.d - z3.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4d { z0.d - z3.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4d { z21.d - z24.d }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4d { z23.d - z26.d }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4d { z5.d - z8.d }, p3/z, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4h { z0.h - z3.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4h { z0.h - z3.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4h { z21.h - z24.h }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4h { z23.h - z26.h }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4h { z5.h - z8.h }, p3/z, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4w { z0.s - z3.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4w { z0.s - z3.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4w { z21.s - z24.s }, p5/z, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - - - - - 2.00 2.00 2.00 2.00 ld4w { z23.s - z26.s }, p3/z, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 1.33 1.33 1.33 - - 1.00 1.00 1.00 1.00 2.00 2.00 2.00 2.00 ld4w { z5.s - z8.s }, p3/z, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z0.d }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z0.h }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z0.s }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1b { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.b }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1b { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.h }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1b { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1b { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1d { z0.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z0.d }, p0/z, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z0.d }, p0/z, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1d { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z23.d }, p3/z, [x13, z8.d, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1d { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1d { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1d { z31.d }, p7/z, [z31.d, #248] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z0.d }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z0.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z0.s }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1h { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1h { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z31.h }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1h { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1h { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1h { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1h { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z0.d }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z0.h }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z0.s }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sb { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sb { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z31.d }, p7/z, [z31.d, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z31.h }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sb { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sb { z31.s }, p7/z, [z31.s, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z0.d }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.d }, p0/z, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.d }, p0/z, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z0.s }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sh { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z23.d }, p3/z, [x13, z8.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sh { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z31.d }, p7/z, [z31.d, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1sh { z31.s }, p7/z, [sp, z31.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1sh { z31.s }, p7/z, [sp, z31.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sh { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sh { z31.s }, p7/z, [z31.s, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sw { z0.d }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sw { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1sw { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1sw { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1sw { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z0.d }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.d }, p0/z, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.d }, p0/z, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.d }, p0/z, [z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z0.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.s }, p0/z, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.s }, p0/z, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z0.s }, p0/z, [z0.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1w { z21.d }, p5/z, [x10, z21.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z23.d }, p3/z, [x13, z8.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 0.50 0.50 0.50 0.50 ldff1w { z31.d }, p7/z, [sp, z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z31.d }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z31.d }, p7/z, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1w { z31.s }, p7/z, [sp, z31.s, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 2.00 2.00 2.00 2.00 ldff1w { z31.s }, p7/z, [sp, z31.s, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - 0.25 0.25 0.25 0.25 - - - - ldff1w { z31.s }, p7/z, [sp] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - 1.00 1.00 1.00 1.00 ldff1w { z31.s }, p7/z, [z31.s, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.b }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.b }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1b { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1d { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1d { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1d { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1h { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z21.h }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z31.h }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sb { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sh { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sw { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sw { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1sw { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z21.d }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z21.s }, p5/z, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z31.d }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnf1w { z31.s }, p7/z, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z0.b }, p0/z, [x0, x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z0.b }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1b { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1b { z0.s }, p0/z, [z1.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z21.b }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1b { z23.b }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1b { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1b { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1b { z31.s }, p7/z, [z31.s, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1b { z31.s }, p7/z, [z31.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z0.d }, p0/z, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z0.d }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1d { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z21.d }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1d { z23.d }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1d { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1d { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1h { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z0.h }, p0/z, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z0.h }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1h { z0.s }, p0/z, [z1.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z21.h }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1h { z23.h }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1h { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1h { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1h { z31.s }, p7/z, [z31.s, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1h { z31.s }, p7/z, [z31.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sb { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sb { z0.s }, p0/z, [z1.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sb { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sb { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sb { z31.s }, p7/z, [z31.s, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sb { z31.s }, p7/z, [z31.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sh { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sh { z0.s }, p0/z, [z1.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sh { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sh { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sh { z31.s }, p7/z, [z31.s, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1sh { z31.s }, p7/z, [z31.s] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sw { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sw { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1sw { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1w { z0.d }, p0/z, [z1.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z0.s }, p0/z, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z0.s }, p0/z, [x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1w { z0.s }, p0/z, [z1.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z21.s }, p5/z, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldnt1w { z23.s }, p3/z, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1w { z31.d }, p7/z, [z31.d, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - - 2.00 - - ldnt1w { z31.d }, p7/z, [z31.d] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1w { z31.s }, p7/z, [z31.s, x0] +# CHECK-NEXT: - - - - - - - 0.67 0.67 0.67 - - - - - - 1.00 1.00 1.00 1.00 ldnt1w { z31.s }, p7/z, [z31.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - - - ldr p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - - - ldr p5, [x10, #255, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 0.50 0.50 - - - - - - - - ldr p7, [x13, #-256, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr z0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr z23, [x13, #255, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - ldr z31, [sp, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, p0/m, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, p0/m, z0.b, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.b, z1.b, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.d, p0/m, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, p0/m, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, p0/m, z0.h, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.h, z1.h, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, p0/m, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, p0/m, z0.s, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z0.s, z1.s, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.b, p0/m, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.b, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.d, p0/m, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.d, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.h, p0/m, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.h, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.s, p0/m, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsl z31.s, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lslr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, p0/m, z0.b, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.b, z1.b, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, p0/m, z0.h, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.h, z1.h, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, p0/m, z0.s, z1.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z0.s, z1.s, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsr z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 lsrr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.b, p7/m, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mad z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p15.b, p7/z, z30.b, z31.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - match p15.h, p7/z, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.b, p7/m, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.d, z1.d, z7.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mla z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.b, p7/m, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.d, z1.d, z7.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mls z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov p0.b, p0/m, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov p15.b, p15/m, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, b0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, p0/m, b0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.b, p0/m, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.b, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z0.b, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #0xe0000000000003ff +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #0xffffffffffff7fff +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, #32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, d0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, p0/m, d0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.d, p0/m, x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z0.d, x0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #-256 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, #32767 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, h0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, p0/m, h0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.h, p0/m, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.h, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z0.h, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.q, q0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, #0xffff7fff +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, #32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, p0/m, s0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z0.s, p0/m, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z0.s, s0 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z0.s, w0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.d, p15/m, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.h, p15/m, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p0/z, #32512 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z21.s, p15/m, #-32768 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.b, p15/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.b, p7/m, b31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movprfx z31, z6 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.b, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z31.b, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.b, z31.b[63] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, p15/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, p7/m, d31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 movprfx z31.d, p7/z, z6.d +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.d, p7/m, sp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z31.d, sp +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.d, z31.d[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.h, p15/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.h, p7/m, h31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.h, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z31.h, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.h, z31.h[31] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.s, p15/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.s, p7/m, s31 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - 0.25 0.25 0.25 0.25 mov z31.s, p7/m, wsp +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - mov z31.s, wsp +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z31.s, z31.s[15] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p0/z, #-1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p0/z, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p0/z, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.b, p15/m, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.d, #-6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.h, #-6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.q, z17.q[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 mov z5.s, #-6 +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - movs p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - movs p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - movs p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - movs p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mrs x3, ID_AA64ZFR0_EL1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL12 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mrs x3, ZCR_EL3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.b, p7/m, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.d, p7/m, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.h, p7/m, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - msb z0.s, p7/m, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - msr ZCR_EL1, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - msr ZCR_EL12, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - msr ZCR_EL2, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - msr ZCR_EL3, x3 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.b, p7/m, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.b, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mul z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mul z0.d, z1.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.h, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z29.s, z30.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.b, z31.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.b, z31.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mul z31.d, z31.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mul z31.d, z31.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - mul z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.h, z31.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.h, z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.s, z31.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - mul z31.s, z31.s, #127 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - nand p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - nand p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - nands p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - nands p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 nbsl z0.d, z0.d, z1.d, z2.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.b, p0/m, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 neg z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p0.b, p0/z, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p0.h, p0/z, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p15.b, p7/z, z30.b, z31.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - 1.00 - - - nmatch p15.h, p7/z, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - nor p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - nor p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - nors p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - nors p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - not p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - not p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 not z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - nots p0.b, p0/z, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - nots p15.b, p15/z, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - orn p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - orn p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - orns p0.b, p0/z, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - orns p15.b, p15/z, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - orr p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.d, z0.d, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.d, z0.d, #0xfffffffffffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.s, z0.s, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z0.s, z0.s, #0xfffffff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z23.h, z23.h, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z23.h, z23.h, #0xfff9 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z5.b, z5.b, #0x6 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 orr z5.b, z5.b, #0xf9 +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - orrs p0.b, p0/z, p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.75 0.25 0.75 orv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pfalse p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pfirst p0.b, p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pfirst p15.b, p15, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmul z0.b, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmul z29.b, z30.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmullb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmullb z29.q, z30.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmullb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmullt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmullt z29.q, z30.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - 0.50 0.50 pmullt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.b, p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.d, p15, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.h, p15, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pnext p0.s, p15, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - pnext p15.b, p15, p15.b +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #14, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #15, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #6, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #7, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #7, p3, [z13.s, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb #7, p3, [z13.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1strm, p0, [x0, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1strm, p0, [x0, #31, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [x10, z21.d, sxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [x10, z21.s, uxtw] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [z10.d, #31] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pldl3strm, p5, [z10.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfb pstl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #14, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.d, #248] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.s, #248] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #15, p7, [z31.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #6, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd #7, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.d, lsl #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.s, sxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0, z0.s, uxtw #3] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1strm, p0, [x0, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1strm, p0, [x0, #31, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pldl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfd pstl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #14, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.d, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.s, #62] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #15, p7, [z31.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #6, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh #7, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1keep, p0, [x0, z0.d, lsl #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1strm, p0, [x0, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1strm, p0, [x0, #31, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.d, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.d, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.s, sxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pldl3strm, p5, [x10, z21.s, uxtw #1] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfh pstl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #14, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.d, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.d] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.s, #124] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #15, p7, [z31.s] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #6, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #7, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw #7, p3, [x13, z8.d, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1keep, p0, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1keep, p0, [x0, z0.s, uxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1strm, p0, [x0, #-32, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1strm, p0, [x0, #31, mul vl] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3strm, p5, [x10, z21.d, lsl #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pldl3strm, p5, [x10, z21.s, sxtw #2] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl1keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl1strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl2keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl2strm, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl3keep, p0, [x0] +# CHECK-NEXT: - - - - - - - 0.33 0.33 0.33 - - - - - - - - - - prfw pstl3strm, p0, [x0] +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptest p15, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptest p15, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.b, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p15.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #15 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #17 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #18 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #19 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #20 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #21 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #22 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #23 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #24 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #25 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #26 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #27 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, #28 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, mul3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, mul4 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl128 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl256 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl3 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl4 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl5 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl6 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl64 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl7 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - ptrue p7.s, vl8 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.b, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.b +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.d +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.h +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p15.s +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #14 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #15 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #16 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #17 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #18 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #19 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #20 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #21 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #22 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #23 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #24 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #25 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #26 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #27 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, #28 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, mul3 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, mul4 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl1 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl128 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl16 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl2 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl256 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl3 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl32 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl4 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl5 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl6 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl64 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl7 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - ptrues p7.s, vl8 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - punpkhi p0.h, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - punpkhi p15.h, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - punpklo p0.h, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - punpklo p15.h, p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnb z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnb z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnb z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnt z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnt z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 raddhnt z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - rax1 z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rbit z0.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - rdffr p0.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - rdffr p0.b, p0/z +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - rdffr p15.b +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - - - - - rdffr p15.b, p15/z +# CHECK-NEXT: - - - - - - - - - - 3.00 1.00 - - - - - - - - rdffrs p0.b, p0/z +# CHECK-NEXT: - - - - - - - - - - 3.00 1.00 - - - - - - - - rdffrs p15.b, p15/z +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rdvl x0, #0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rdvl x21, #-32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rdvl x23, #31 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rdvl xzr, #-1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rev p0.b, p1.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rev p0.d, p1.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rev p0.h, p1.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - rev p0.s, p1.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rev z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revb z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revb z0.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revb z0.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revh z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revh z0.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 revw z0.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 rshrnt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnb z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnb z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnb z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnt z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnt z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 rsubhnt z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 saba z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabalb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabalb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabalb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabalt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabalt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sabalt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabd z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sabdlt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp z0.h, p0/m, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp z29.s, p0/m, z30.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sadalp z30.d, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlbt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlbt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlbt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddlt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 saddv d0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 saddv d0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 saddv d0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwb z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwb z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwb z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwt z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwt z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 saddwt z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclb z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclb z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclt z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sbclt z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.h, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - scvtf z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf z0.h, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - scvtf z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - scvtf z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 20.00 - - - sdiv z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 11.00 - - - sdiv z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 20.00 - - - sdivr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 11.00 - - - sdivr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sdot z0.d, z1.h, z15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sdot z0.d, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot z0.s, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sdot z0.s, z1.b, z7.b[3] +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - sel p0.b, p1, p2.b, p3.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.b, p11, z13.b, z8.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.d, p11, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.h, p11, z13.h, z8.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sel z23.s, p11, z13.s, z8.s +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - setffr +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 shrnt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsub z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 shsubr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.b, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.d, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.h, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sli z31.s, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - sm4e z0.s, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - sm4ekey z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.b, z0.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.d, z0.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.h, z0.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z0.s, z0.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.b, z31.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.d, z31.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.h, z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smax z31.s, z31.s, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smaxp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 smaxv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 smaxv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 smaxv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 smaxv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.b, z0.b, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.d, z0.d, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.h, z0.h, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z0.s, z0.s, #-128 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.b, z31.b, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.d, z31.d, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.h, z31.h, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smin z31.s, z31.s, #127 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sminp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 sminv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 sminv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 sminv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 sminv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlalt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smlslt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 smmla z0.s, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.b, p7/m, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.b, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - smulh z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.h, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smulh z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smulh z29.s, z30.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - smulh z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - smullt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z29.b, p7, { z30.b, z31.b } +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z29.d, p7, { z30.d, z31.d } +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z29.h, p7, { z30.h, z31.h } +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z29.s, p7, { z30.s, z31.s } +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z31.b, p7, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z31.d, p7, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z31.h, p7, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 1.00 - - splice z31.s, p7, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqabs z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqadd z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.b, z0.b, z0.b, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.d, z0.d, z0.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.h, z0.h, z0.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z0.s, z0.s, z0.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.b, z31.b, z31.b, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.d, z31.d, z31.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.h, z31.h, z31.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqcadd z31.s, z31.s, z31.s, #270 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecb x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecd x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdech x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdech z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.b, wzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.d, wzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.h, wzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecp xzr, p15.s, wzr +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqdecp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqdecp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqdecp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqdecw x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqdecw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.d, z1.s, z15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalbt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalbt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalbt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.d, z1.s, z15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlalt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.d, z1.s, z15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslbt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslbt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslbt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.d, z1.s, z15.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmlslt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.b, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqdmulh z0.d, z1.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.h, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmulh z29.s, z30.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqdmulh z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqdmullt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincb x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincd x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqinch x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqinch z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.b, wzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.d, wzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.h, wzr +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincp xzr, p15.s, wzr +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqincp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqincp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 sqincp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - sqincw x0, w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqincw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.b, p7/m, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqneg z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.b, z1.b, z2.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z0.d, z1.d, z2.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.h, z1.h, z2.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.h, z1.h, z2.h[0], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.s, z1.s, z2.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z0.s, z1.s, z2.s[0], #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z15.b, z16.b, z17.b, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z15.d, z16.d, z17.d, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z15.h, z16.h, z17.h, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z15.s, z16.s, z17.s, #270 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z29.b, z30.b, z31.b, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z29.d, z30.d, z31.d, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z29.h, z30.h, z31.h, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z29.s, z30.s, z31.s, #90 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.b, z31.b, z31.b, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdcmlah z31.d, z31.d, z31.d, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.h, z30.h, z7.h[0], #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.h, z31.h, z31.h, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.s, z30.s, z7.s[0], #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdcmlah z31.s, z31.s, z31.s, #180 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah z0.d, z1.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlah z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlah z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh z0.d, z1.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmlsh z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmlsh z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.b, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmulh z0.d, z1.d, z15.d[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.h, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.h, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z0.s, z1.s, z7.s[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - sqrdmulh z29.s, z30.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - sqrdmulh z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshl z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshlr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrnt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqrshrunt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.b, p0/m, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.d, p0/m, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.h, p0/m, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z0.s, p0/m, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.b, p0/m, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.d, p0/m, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.h, p0/m, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshl z31.s, p0/m, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.b, p0/m, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.d, p0/m, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.h, p0/m, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z0.s, p0/m, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.b, p0/m, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.d, p0/m, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.h, p0/m, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshlu z31.s, p0/m, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrnt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqshrunt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsub z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sqsubr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnb z0.b, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnb z0.h, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnb z0.s, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnt z0.b, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnt z0.h, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtnt z0.s, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunb z0.b, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunb z0.h, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunb z0.s, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunt z0.b, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunt z0.h, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sqxtunt z0.s, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 srhadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sri z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshl z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshlr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srshr z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 srsra z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z0.d, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z0.h, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z0.s, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z31.d, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z31.h, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllb z31.s, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z0.d, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z0.h, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z0.s, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z31.d, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z31.h, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sshllt z31.s, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ssra z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublbt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublbt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublbt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssublt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubltb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubltb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubltb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwb z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwb z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwb z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwt z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwt z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ssubwt z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.d }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.h }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.s }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z0.s }, p0, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z0.s }, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z0.s }, p7, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.b }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.h }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z21.s }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.b }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1b { z31.d }, p7, [z31.d, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.h }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1b { z31.s }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1b { z31.s }, p7, [z31.s, #31] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z0.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, sxtw #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, uxtw #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1d { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1d { z31.d }, p7, [z31.d, #248] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.50 0.50 - - st1h { z0.d }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, sxtw #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, uxtw #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.50 0.50 - - st1h { z0.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z0.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.50 0.50 - - st1h { z0.s }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, sxtw #1] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, uxtw #1] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z0.s }, p7, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z21.h }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z21.s }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1h { z31.d }, p7, [z31.d, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z31.h }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1h { z31.s }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1h { z31.s }, p7, [z31.s, #62] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.d }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, lsl #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, sxtw #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, sxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, uxtw #2] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d, uxtw] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p0, [x0, z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z0.d }, p7, [z0.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, sxtw #2] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, sxtw] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, uxtw #2] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p0, [x0, z0.s, uxtw] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z0.s }, p7, [z0.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z21.d }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z21.s }, p5, [x10, #5, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z31.d }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st1w { z31.d }, p7, [z31.d, #124] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st1w { z31.s }, p7, [sp, #-1, mul vl] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - st1w { z31.s }, p7, [z31.s, #124] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2b { z0.b, z1.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2b { z0.b, z1.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2b { z21.b, z22.b }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2b { z23.b, z24.b }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2b { z5.b, z6.b }, p3, [x17, x16] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2d { z0.d, z1.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2d { z0.d, z1.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2d { z21.d, z22.d }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2d { z23.d, z24.d }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2d { z5.d, z6.d }, p3, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - 0.50 0.50 0.50 0.50 1.00 1.00 - - st2h { z0.h, z1.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2h { z0.h, z1.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2h { z21.h, z22.h }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2h { z23.h, z24.h }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - 0.50 0.50 0.50 0.50 1.00 1.00 - - st2h { z5.h, z6.h }, p3, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2w { z0.s, z1.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2w { z0.s, z1.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2w { z21.s, z22.s }, p5, [x10, #10, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - st2w { z23.s, z24.s }, p3, [x13, #-16, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - st2w { z5.s, z6.s }, p3, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3b { z0.b - z2.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3b { z0.b - z2.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3b { z21.b - z23.b }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3b { z23.b - z25.b }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3b { z5.b - z7.b }, p3, [x17, x16] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3d { z0.d - z2.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3d { z0.d - z2.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3d { z21.d - z23.d }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3d { z23.d - z25.d }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3d { z5.d - z7.d }, p3, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3h { z0.h - z2.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3h { z0.h - z2.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3h { z21.h - z23.h }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3h { z23.h - z25.h }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3h { z5.h - z7.h }, p3, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3w { z0.s - z2.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3w { z0.s - z2.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3w { z21.s - z23.s }, p5, [x10, #15, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - - - - - 4.50 4.50 - - st3w { z23.s - z25.s }, p3, [x13, #-24, mul vl] +# CHECK-NEXT: - - - - - - - - 4.50 4.50 - - 2.25 2.25 2.25 2.25 4.50 4.50 - - st3w { z5.s - z7.s }, p3, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4b { z0.b - z3.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4b { z0.b - z3.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4b { z21.b - z24.b }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4b { z23.b - z26.b }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4b { z5.b - z8.b }, p3, [x17, x16] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4d { z0.d - z3.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4d { z0.d - z3.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4d { z21.d - z24.d }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4d { z23.d - z26.d }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4d { z5.d - z8.d }, p3, [x17, x16, lsl #3] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4h { z0.h - z3.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4h { z0.h - z3.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4h { z21.h - z24.h }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4h { z23.h - z26.h }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4h { z5.h - z8.h }, p3, [x17, x16, lsl #1] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4w { z0.s - z3.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4w { z0.s - z3.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4w { z21.s - z24.s }, p5, [x10, #20, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - - - - - 9.00 9.00 - - st4w { z23.s - z26.s }, p3, [x13, #-32, mul vl] +# CHECK-NEXT: - - - - - - - - 9.00 9.00 - - 4.50 4.50 4.50 4.50 9.00 9.00 - - st4w { z5.s - z8.s }, p3, [x17, x16, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0, x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z0.b }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1b { z0.d }, p0, [z1.d] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1b { z0.s }, p0, [z1.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z21.b }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1b { z23.b }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1b { z31.d }, p7, [z31.d, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1b { z31.d }, p7, [z31.d] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1b { z31.s }, p7, [z31.s, x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1b { z31.s }, p7, [z31.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0, x0, lsl #3] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z0.d }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1d { z0.d }, p0, [z1.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z21.d }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1d { z23.d }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1d { z31.d }, p7, [z31.d, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1d { z31.d }, p7, [z31.d] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1h { z0.d }, p0, [z1.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0, x0, lsl #1] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1h { z0.h }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1h { z0.s }, p0, [z1.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1h { z21.h }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1h { z23.h }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1h { z31.d }, p7, [z31.d, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1h { z31.d }, p7, [z31.d] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1h { z31.s }, p7, [z31.s, x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1h { z31.s }, p7, [z31.s] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1w { z0.d }, p0, [z1.d] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0, x0, lsl #2] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z0.s }, p0, [x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1w { z0.s }, p0, [z1.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z21.s }, p5, [x10, #7, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.25 0.25 0.25 0.25 stnt1w { z23.s }, p3, [x13, #-8, mul vl] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1w { z31.d }, p7, [z31.d, x0] +# CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - 1.00 1.00 - - stnt1w { z31.d }, p7, [z31.d] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1w { z31.s }, p7, [z31.s, x0] +# CHECK-NEXT: - - - - - - - - 2.00 2.00 - - - - - - 2.00 2.00 - - stnt1w { z31.s }, p7, [z31.s] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - - - str p0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - - - str p15, [sp, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - - - - - str p5, [x10, #255, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str z0, [x0] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str z21, [x10, #-256, mul vl] +# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - - 0.50 0.50 - - str z31, [sp, #255, mul vl] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.b, p5/m, z21.b, z10.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.b, z10.b, z21.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.d, p5/m, z21.d, z10.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.d, z10.d, z21.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.h, p5/m, z21.h, z10.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.h, z10.h, z21.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.s, p5/m, z21.s, z10.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z21.s, z10.s, z21.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.b, p3/m, z23.b, z13.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.b, z13.b, z8.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.d, p3/m, z23.d, z13.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.d, z13.d, z8.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.h, p3/m, z23.h, z13.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.h, z13.h, z8.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.s, p3/m, z23.s, z13.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z23.s, z13.s, z8.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sub z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnb z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnb z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnb z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnt z0.b, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnt z0.h, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subhnt z0.s, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.b, p0/m, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.d, p0/m, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.h, p0/m, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.s, p0/m, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 subr z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpkhi z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpkhi z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpkhi z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpklo z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpklo z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 sunpklo z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 suqadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtb z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxth z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxth z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxth z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxth z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtw z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 sxtw z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.b, { z29.b, z30.b }, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.d, { z29.d, z30.d }, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.h, { z29.h, z30.h }, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z28.s, { z29.s, z30.s }, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.b, { z31.b }, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.d, { z31.d }, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.h, { z31.h }, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbl z31.s, { z31.s }, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 tbx z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn1 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn1 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - trn2 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 trn2 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.b, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.d, z1.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.h, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uaba z0.s, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabalb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabalb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabalb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabalt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabalt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uabalt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabd z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uabdlt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp z0.h, p0/m, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp z29.s, p0/m, z30.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uadalp z30.d, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddlt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 uaddv d0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 uaddv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uaddv d0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uaddv d0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwb z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwb z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwb z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwt z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwt z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uaddwt z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.d, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.h, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 2.00 - 2.00 - ucvtf z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf z0.h, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - ucvtf z0.s, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ucvtf z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 20.00 - - - udiv z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 11.00 - - - udiv z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 20.00 - - - udivr z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 11.00 - - - udivr z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - udot z0.d, z1.h, z15.h[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - udot z0.d, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot z0.s, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 udot z0.s, z1.b, z7.b[3] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsub z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uhsubr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umax z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umaxp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 umaxv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 umaxv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 umaxv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 umaxv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.b, p7/m, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.d, p7/m, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.h, p7/m, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 umin z31.s, p7/m, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uminp z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 2.50 0.50 2.50 uminv b0, p7, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 0.50 0.50 0.50 uminv d0, p7, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uminv h0, p7, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 1.50 0.50 1.50 uminv s0, p7, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlalt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.d, z1.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.h, z1.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.s, z1.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umlslt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 ummla z0.s, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.b, p7/m, z0.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.b, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - umulh z0.d, p7/m, z0.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.h, p7/m, z0.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.h, z1.h, z2.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umulh z0.s, p7/m, z0.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umulh z29.s, z30.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - umulh z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullb z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullb z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullt z0.d, z1.s, z15.s[1] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullt z0.s, z1.h, z7.h[7] +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.50 - 0.50 - umullt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqadd z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdech x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdech z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp wzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqdecp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqdecp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqdecp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqdecw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqdecw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincb x0, vl1 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincd x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincd z0.d, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqinch x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqinch z0.h, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp wzr, p15.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincp x0, p0.s +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqincp z0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqincp z0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 1.50 0.50 - - - - 0.25 0.25 0.25 0.25 uqincp z0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw w0, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, #14 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, pow2 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uqincw x0, vl1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s, all, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s, pow2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqincw z0.s, pow2, mul #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshl z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshlr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqrshrnt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.b, p0/m, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.d, p0/m, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.h, p0/m, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z0.s, p0/m, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.b, p0/m, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.d, p0/m, z31.d, #63 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.h, p0/m, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshl z31.s, p0/m, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshlr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnb z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z0.b, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z0.h, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z0.s, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z31.b, z31.h, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z31.h, z31.s, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqshrnt z31.s, z31.d, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.b, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.d, z0.d, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.d, z0.d, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, z0.h, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.s, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.s, z0.s, #0, lsl #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.b, z31.b, #255 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.d, z31.d, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.h, z31.h, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsub z31.s, z31.s, #65280 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uqsubr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnb z0.b, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnb z0.h, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnb z0.s, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnt z0.b, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnt z0.h, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uqxtnt z0.s, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - urecpe z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 urhadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshl z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshlr z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.b, p0/m, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.d, p0/m, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.h, p0/m, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z0.s, p0/m, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.b, p0/m, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.d, p0/m, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.h, p0/m, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 urshr z31.s, p0/m, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - 1.00 - ursqrte z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ursra z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z0.d, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z0.h, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z0.s, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z31.d, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z31.h, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllb z31.s, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z0.d, z0.s, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z0.h, z0.b, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z0.s, z0.h, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z31.d, z31.s, #31 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z31.h, z31.b, #7 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 ushllt z31.s, z31.h, #15 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usmmla z0.s, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z0.b, p0/m, z0.b, z1.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z0.h, p0/m, z0.h, z1.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z29.s, p7/m, z29.s, z30.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usqadd z31.d, p7/m, z31.d, z30.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.b, z0.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.d, z0.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.h, z0.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z0.s, z0.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.b, z31.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.d, z31.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.h, z31.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 usra z31.s, z31.s, #32 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublb z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublb z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublb z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublt z0.h, z1.b, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublt z29.s, z30.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usublt z31.d, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwb z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwb z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwb z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwt z0.h, z1.h, z2.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwt z29.s, z30.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 usubwt z31.d, z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpkhi z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpkhi z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpkhi z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpklo z31.d, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpklo z31.h, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uunpklo z31.s, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z0.h, p0/m, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z31.h, p7/m, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtb z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxth z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxth z0.s, p0/m, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxth z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxth z31.s, p7/m, z31.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtw z0.d, p0/m, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - - 0.50 - 0.50 uxtw z31.d, p7/m, z31.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp1 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp1 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - uzp2 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 uzp2 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, wzr, w0 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.b, xzr, x0 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.d, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.d, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.h, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.h, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.s, w0, wzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilege p15.s, x0, xzr +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.b, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.d, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.h, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilerw p15.s, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.b, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.d, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.h, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 1.00 - - - - - - - - whilewr p15.s, x30, x30 +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - wrffr p0.b +# CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - wrffr p15.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z0.b, z0.b, z1.b, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z0.d, z0.d, z1.d, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z0.h, z0.h, z1.h, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z0.s, z0.s, z1.s, #1 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z31.b, z31.b, z30.b, #8 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z31.d, z31.d, z30.d, #64 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z31.h, z31.h, z30.h, #16 +# CHECK-NEXT: - - - - - - - - - - - - - - - - 1.00 - - - xar z31.s, z31.s, z30.s, #32 +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.b, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.d, p0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.h, p0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p0.s, p0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip1 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip1 z31.s, z31.s, z31.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.b, p0.b, p0.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.d, p0.d, p0.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.h, p0.h, p0.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p0.s, p0.s, p0.s +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.b, p15.b, p15.b +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.d, p15.d, p15.d +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.h, p15.h, p15.h +# CHECK-NEXT: - - - - - - - - - - 0.50 0.50 - - - - - - - - zip2 p15.s, p15.s, p15.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.b, z0.b, z0.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.d, z0.d, z0.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.h, z0.h, z0.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z0.s, z0.s, z0.s +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.b, z31.b, z31.b +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.d, z31.d, z31.d +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.h, z31.h, z31.h +# CHECK-NEXT: - - - - - - - - - - - - - - - - 0.25 0.25 0.25 0.25 zip2 z31.s, z31.s, z31.s diff --git a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-zero-lat-movs.s b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-zero-lat-movs.s index aecd89093900f..1690d9669b396 100644 --- a/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-zero-lat-movs.s +++ b/llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-zero-lat-movs.s @@ -41,35 +41,38 @@ mov x1, x2 # CHECK-NEXT: [0.1] - V2UnitB # CHECK-NEXT: [1.0] - V2UnitD # CHECK-NEXT: [1.1] - V2UnitD -# CHECK-NEXT: [2] - V2UnitL2 -# CHECK-NEXT: [3.0] - V2UnitL01 -# CHECK-NEXT: [3.1] - V2UnitL01 -# CHECK-NEXT: [4] - V2UnitM0 -# CHECK-NEXT: [5] - V2UnitM1 -# CHECK-NEXT: [6] - V2UnitS0 -# CHECK-NEXT: [7] - V2UnitS1 -# CHECK-NEXT: [8] - V2UnitS2 -# CHECK-NEXT: [9] - V2UnitS3 -# CHECK-NEXT: [10] - V2UnitV0 -# CHECK-NEXT: [11] - V2UnitV1 -# CHECK-NEXT: [12] - V2UnitV2 -# CHECK-NEXT: [13] - V2UnitV3 +# 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] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: - - - - - - - - - - - - - - - - - +# 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: - - - - - - - - - - - - - - - - - - - - # CHECK: Resource pressure by instruction: -# CHECK-NEXT: [0.0] [0.1] [1.0] [1.1] [2] [3.0] [3.1] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov x1, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov x1, xzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov w1, #0 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov w1, wzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - fmov h1, wzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - fmov h1, xzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - fmov s1, wzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - fmov d1, xzr -# CHECK-NEXT: - - - - - - - - - - - - - - - - - movi d1, #0000000000000000 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - movi v1.2d, #0000000000000000 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov w1, w2 -# CHECK-NEXT: - - - - - - - - - - - - - - - - - mov x1, x2 +# 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: - - - - - - - - - - - - - - - - - - - - mov x1, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov x1, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov w1, #0 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov w1, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - fmov h1, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - fmov h1, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - fmov s1, wzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - fmov d1, xzr +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - movi d1, #0000000000000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - movi v1.2d, #0000000000000000 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov w1, w2 +# CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - mov x1, x2 From 2c739dfd53fde0995f91c8a2c11ec803041bac86 Mon Sep 17 00:00:00 2001 From: Hugo Trachino Date: Wed, 4 Dec 2024 09:32:10 +0000 Subject: [PATCH 005/593] [MLIR][Arith] Add ExpandOps to convertArithToLLVM (#117305) Arith Floor and Ceil ops would not get lowered when running --convert-arith-to-llvm. --- .../Conversion/ArithToLLVM/ArithToLLVM.cpp | 5 +- .../Conversion/ArithToLLVM/arith-to-llvm.mlir | 62 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp index 54d941ae9f6c8..211921638e42a 100644 --- a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp +++ b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp @@ -13,6 +13,7 @@ #include "mlir/Conversion/LLVMCommon/ConversionTarget.h" #include "mlir/Conversion/LLVMCommon/VectorPattern.h" #include "mlir/Dialect/Arith/IR/Arith.h" +#include "mlir/Dialect/Arith/Transforms/Passes.h" #include "mlir/Dialect/LLVMIR/LLVMAttrs.h" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" #include "mlir/IR/TypeUtilities.h" @@ -504,7 +505,8 @@ struct ArithToLLVMConversionPass options.overrideIndexBitwidth(indexBitwidth); LLVMTypeConverter converter(&getContext(), options); - mlir::arith::populateArithToLLVMConversionPatterns(converter, patterns); + arith::populateCeilFloorDivExpandOpsPatterns(patterns); + arith::populateArithToLLVMConversionPatterns(converter, patterns); if (failed(applyPartialConversion(getOperation(), target, std::move(patterns)))) @@ -530,6 +532,7 @@ struct ArithToLLVMDialectInterface : public ConvertToLLVMPatternInterface { void populateConvertToLLVMConversionPatterns( ConversionTarget &target, LLVMTypeConverter &typeConverter, RewritePatternSet &patterns) const final { + arith::populateCeilFloorDivExpandOpsPatterns(patterns); arith::populateArithToLLVMConversionPatterns(typeConverter, patterns); } }; diff --git a/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir b/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir index 64c40f1aba43b..a9dcc0a16b3db 100644 --- a/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir +++ b/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir @@ -540,6 +540,68 @@ func.func @select(%arg0 : i1, %arg1 : i32, %arg2 : i32) -> i32 { // ----- +// CHECK-LABEL: @ceildivsi +// CHECK-SAME: %[[ARG0:.*]]: i64) -> i64 +func.func @ceildivsi(%arg0 : i64) -> i64 { + // CHECK: %[[CST0:.*]] = llvm.mlir.constant(1 : i64) : i64 + // CHECK: %[[CST1:.*]] = llvm.mlir.constant(0 : i64) : i64 + // CHECK: %[[CST2:.*]] = llvm.mlir.constant(-1 : i64) : i64 + // CHECK: %[[CMP0:.*]] = llvm.icmp "sgt" %[[ARG0]], %[[CST1]] : i64 + // CHECK: %[[SEL0:.*]] = llvm.select %[[CMP0]], %[[CST2]], %[[CST0]] : i1, i64 + // CHECK: %[[ADD0:.*]] = llvm.add %[[SEL0]], %[[ARG0]] : i64 + // CHECK: %[[DIV0:.*]] = llvm.sdiv %[[ADD0]], %[[ARG0]] : i64 + // CHECK: %[[ADD1:.*]] = llvm.add %[[DIV0]], %[[CST0]] : i64 + // CHECK: %[[SUB0:.*]] = llvm.sub %[[CST1]], %[[ARG0]] : i64 + // CHECK: %[[DIV1:.*]] = llvm.sdiv %[[SUB0]], %[[ARG0]] : i64 + // CHECK: %[[SUB1:.*]] = llvm.sub %[[CST1]], %[[DIV1]] : i64 + // CHECK: %[[CMP1:.*]] = llvm.icmp "slt" %[[ARG0]], %[[CST1]] : i64 + // CHECK: %[[CMP2:.*]] = llvm.icmp "sgt" %[[ARG0]], %[[CST1]] : i64 + // CHECK: %[[CMP3:.*]] = llvm.icmp "slt" %[[ARG0]], %[[CST1]] : i64 + // CHECK: %[[CMP4:.*]] = llvm.icmp "sgt" %[[ARG0]], %[[CST1]] : i64 + // CHECK: %[[AND0:.*]] = llvm.and %[[CMP1]], %[[CMP3]] : i1 + // CHECK: %[[AND1:.*]] = llvm.and %[[CMP2]], %[[CMP4]] : i1 + // CHECK: %[[OR:.*]] = llvm.or %[[AND0]], %[[AND1]] : i1 + // CHECK: %[[SEL1:.*]] = llvm.select %[[OR]], %[[ADD1]], %[[SUB1]] : i1, i64 + %0 = arith.ceildivsi %arg0, %arg0 : i64 + return %0: i64 +} + +// CHECK-LABEL: @ceildivui +// CHECK-SAME: %[[ARG0:.*]]: i32) -> i32 +func.func @ceildivui(%arg0 : i32) -> i32 { +// CHECK: %[[CST0:.*]] = llvm.mlir.constant(0 : i32) : i32 +// CHECK: %[[CMP0:.*]] = llvm.icmp "eq" %[[ARG0]], %[[CST0]] : i32 +// CHECK: %[[CST1:.*]] = llvm.mlir.constant(1 : i32) : i32 +// CHECK: %[[SUB0:.*]] = llvm.sub %[[ARG0]], %[[CST1]] : i32 +// CHECK: %[[DIV0:.*]] = llvm.udiv %[[SUB0]], %[[ARG0]] : i32 +// CHECK: %[[ADD0:.*]] = llvm.add %[[DIV0]], %[[CST1]] : i32 +// CHECK: %[[SEL0:.*]] = llvm.select %[[CMP0]], %[[CST0]], %[[ADD0]] : i1, i32 + %0 = arith.ceildivui %arg0, %arg0 : i32 + return %0: i32 +} + +// ----- + +// CHECK-LABEL: @floordivsi +// CHECK-SAME: %[[ARG0:.*]]: i32, %[[ARG1:.*]]: i32) -> i32 +func.func @floordivsi(%arg0 : i32, %arg1 : i32) -> i32 { + // CHECK: %[[SDIV:.*]] = llvm.sdiv %[[ARG0]], %[[ARG1]] : i32 + // CHECK: %[[MUL0:.*]] = llvm.mul %[[SDIV]], %[[ARG1]] : i32 + // CHECK: %[[CMP0:.*]] = llvm.icmp "ne" %[[ARG0]], %[[MUL0]] : i32 + // CHECK: %[[CST0:.*]] = llvm.mlir.constant(0 : i32) : i32 + // CHECK: %[[CMP1:.*]] = llvm.icmp "slt" %[[ARG0]], %[[CST0]] : i32 + // CHECK: %[[CMP2:.*]] = llvm.icmp "slt" %[[ARG1]], %[[CST0]] : i32 + // CHECK: %[[CMP3:.*]] = llvm.icmp "ne" %[[CMP1]], %[[CMP2]] : i1 + // CHECK: %[[AND:.*]] = llvm.and %[[CMP0]], %[[CMP3]] : i1 + // CHECK: %[[CST1:.*]] = llvm.mlir.constant(-1 : i32) : i32 + // CHECK: %[[ADD:.*]] = llvm.add %[[SDIV]], %[[CST1]] : i32 + // CHECK: %[[SEL:.*]] = llvm.select %[[AND]], %[[ADD]], %[[SDIV]] : i1, i32 + %0 = arith.floordivsi %arg0, %arg1 : i32 + return %0 : i32 +} + +// ----- + // CHECK-LABEL: @minmaxi func.func @minmaxi(%arg0 : i32, %arg1 : i32) -> i32 { // CHECK: = llvm.intr.smin(%arg0, %arg1) : (i32, i32) -> i32 From 5cbc42142714a31ecb4ef7f674ba577946202e6e Mon Sep 17 00:00:00 2001 From: Dmitri Gribenko Date: Wed, 4 Dec 2024 10:32:57 +0100 Subject: [PATCH 006/593] [bazel] Port 9c9d4b9e73c1 --- utils/bazel/llvm-project-overlay/llvm/BUILD.bazel | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel index b3c7108d840d3..88591a51dd203 100644 --- a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel @@ -2937,6 +2937,8 @@ cc_library( ]), hdrs = glob([ "include/llvm/ExecutionEngine/Orc/Shared/*.h", + ] + [ + "include/llvm/ExecutionEngine/Orc/SymbolStringPool.h", ]), copts = llvm_copts, deps = [ From 03aae4fbaea4d3bf9364bc04bcbb5898816ab5ae Mon Sep 17 00:00:00 2001 From: Jerry-Ge Date: Wed, 4 Dec 2024 01:49:09 -0800 Subject: [PATCH 007/593] [MLIR][TOSA] Update CustomOp input and output names (#118408) Update input name from input to input_list Update output name from outputs to output_list To match specification: https://www.mlplatform.org/tosa/tosa_spec.html#_custom Signed-off-by: Jerry Ge --- mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td b/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td index b1d3a32598c88..93a7aba05d9d8 100644 --- a/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td +++ b/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td @@ -2013,9 +2013,9 @@ def Tosa_CustomOp : Tosa_Op<"custom"> { `implementation_attrs` is a string which is a backend and identifier specific set of attributes to the custom operator. - `inputs` is the set of tensor inputs to the custom operator. + `input_list` is the set of tensor inputs to the custom operator. - `outputs is the list of tensors returned by the operator. The number of operators + `output_list` is the list of tensors returned by the operator. The number of operators is backend specific. Example: @@ -2031,11 +2031,11 @@ def Tosa_CustomOp : Tosa_Op<"custom"> { StrAttr:$operator_name, StrAttr:$domain_name, StrAttr:$implementation_attrs, - Variadic:$inputs + Variadic:$input_list ); let results = (outs - Variadic:$outputs + Variadic:$output_list ); let assemblyFormat = "operands attr-dict `:` functional-type(operands, results)"; From caf8942cd9e52fca35992ab34af0a1cec1866759 Mon Sep 17 00:00:00 2001 From: Kai Sasaki Date: Wed, 4 Dec 2024 18:56:02 +0900 Subject: [PATCH 008/593] [mlir][transform] Guard parametric loop tiling pass from no option (#118254) `test-extract-fixed-outer-loops` pass always crash without any `test-outer-loop-sizes` option. We need to keep the pass from crash by checking the option existence. Fix https://github.com/llvm/llvm-project/issues/61716, https://github.com/llvm/llvm-project/issues/116360 --------- Co-authored-by: Mehdi Amini --- mlir/test/Transforms/invalid-outer-loop-size.mlir | 6 ++++++ mlir/test/lib/Dialect/SCF/TestLoopParametricTiling.cpp | 7 +++++++ 2 files changed, 13 insertions(+) create mode 100644 mlir/test/Transforms/invalid-outer-loop-size.mlir diff --git a/mlir/test/Transforms/invalid-outer-loop-size.mlir b/mlir/test/Transforms/invalid-outer-loop-size.mlir new file mode 100644 index 0000000000000..7c1e92a4b7ba7 --- /dev/null +++ b/mlir/test/Transforms/invalid-outer-loop-size.mlir @@ -0,0 +1,6 @@ +// RUN: not mlir-opt -test-extract-fixed-outer-loops %s 2>&1 | FileCheck %s + +func.func @no_crash(%arg0: memref) { + // CHECK: error: missing `test-outer-loop-sizes` pass-option for outer loop sizes + return +} diff --git a/mlir/test/lib/Dialect/SCF/TestLoopParametricTiling.cpp b/mlir/test/lib/Dialect/SCF/TestLoopParametricTiling.cpp index 1f33a04b0668a..e7e2f70ba1197 100644 --- a/mlir/test/lib/Dialect/SCF/TestLoopParametricTiling.cpp +++ b/mlir/test/lib/Dialect/SCF/TestLoopParametricTiling.cpp @@ -40,6 +40,13 @@ class SimpleParametricLoopTilingPass } void runOnOperation() override { + if (sizes.empty()) { + emitError( + UnknownLoc::get(&getContext()), + "missing `test-outer-loop-sizes` pass-option for outer loop sizes"); + signalPassFailure(); + return; + } getOperation()->walk([this](scf::ForOp op) { // Ignore nested loops. if (op->getParentRegion()->getParentOfType()) From 2202f0e093d84081ff098c6720bc8e2302a56061 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 4 Dec 2024 09:53:17 +0000 Subject: [PATCH 009/593] [SLP][X86] Add test coverage for #111126 This needs to be expanded to a wider range of tests but for now just focus on #111126 --- .../SLPVectorizer/X86/store-constant.ll | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll diff --git a/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll b/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll new file mode 100644 index 0000000000000..41c3561dd7378 --- /dev/null +++ b/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll @@ -0,0 +1,32 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64 | FileCheck %s --check-prefixes=SSE +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v2 | FileCheck %s --check-prefixes=SSE +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v3 | FileCheck %s --check-prefixes=AVX +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v4 | FileCheck %s --check-prefixes=AVX + +@arr = global [20 x i64] zeroinitializer, align 16 + +define void @PR111126() { +; SSE-LABEL: @PR111126( +; SSE-NEXT: store i64 1, ptr @arr, align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 8), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 16), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 24), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 +; SSE-NEXT: ret void +; +; AVX-LABEL: @PR111126( +; AVX-NEXT: store <4 x i64> splat (i64 1), ptr @arr, align 16 +; AVX-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 +; AVX-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 +; AVX-NEXT: ret void +; + store i64 1, ptr @arr, align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 8), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 16), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 24), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 + ret void +} From 78db4e9f7b93953e425b3b69636925a557bff7eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Je=C4=8Dmen?= Date: Wed, 4 Dec 2024 11:09:19 +0100 Subject: [PATCH 010/593] [NFC][IRCE] Don't require LoopStructure to determine IRCE profitability (#116384) This refactoring hoists the profitability check earlier in the pipeline, so that for loops that are not profitable to transform there is no iteration over the basic blocks or LoopStructure computation. Motivated by PR #104659 that tweaks how the profitability of individual branches is evaluated. --- .../Scalar/InductiveRangeCheckElimination.cpp | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp index a49dc7d30a00b..0bc783412595e 100644 --- a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp +++ b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp @@ -248,7 +248,7 @@ class InductiveRangeCheckElimination { // Returns true if it is profitable to do a transform basing on estimation of // number of iterations. - bool isProfitableToTransform(const Loop &L, LoopStructure &LS); + bool isProfitableToTransform(const Loop &L); public: InductiveRangeCheckElimination(ScalarEvolution &SE, @@ -938,14 +938,12 @@ PreservedAnalyses IRCEPass::run(Function &F, FunctionAnalysisManager &AM) { return getLoopPassPreservedAnalyses(); } -bool -InductiveRangeCheckElimination::isProfitableToTransform(const Loop &L, - LoopStructure &LS) { +bool InductiveRangeCheckElimination::isProfitableToTransform(const Loop &L) { if (SkipProfitabilityChecks) return true; if (GetBFI) { BlockFrequencyInfo &BFI = (*GetBFI)(); - uint64_t hFreq = BFI.getBlockFreq(LS.Header).getFrequency(); + uint64_t hFreq = BFI.getBlockFreq(L.getHeader()).getFrequency(); uint64_t phFreq = BFI.getBlockFreq(L.getLoopPreheader()).getFrequency(); if (phFreq != 0 && hFreq != 0 && (hFreq / phFreq < MinRuntimeIterations)) { LLVM_DEBUG(dbgs() << "irce: could not prove profitability: " @@ -958,8 +956,17 @@ InductiveRangeCheckElimination::isProfitableToTransform(const Loop &L, if (!BPI) return true; + + auto *Latch = L.getLoopLatch(); + if (!Latch) + return true; + auto *LatchBr = dyn_cast(Latch->getTerminator()); + if (!LatchBr) + return true; + auto LatchBrExitIdx = LatchBr->getSuccessor(0) == L.getHeader() ? 1 : 0; + BranchProbability ExitProbability = - BPI->getEdgeProbability(LS.Latch, LS.LatchBrExitIdx); + BPI->getEdgeProbability(Latch, LatchBrExitIdx); if (ExitProbability > BranchProbability(1, MinRuntimeIterations)) { LLVM_DEBUG(dbgs() << "irce: could not prove profitability: " << "the exit probability is too big " << ExitProbability @@ -982,6 +989,9 @@ bool InductiveRangeCheckElimination::run( return false; } + if (!isProfitableToTransform(*L)) + return false; + LLVMContext &Context = Preheader->getContext(); SmallVector RangeChecks; bool Changed = false; @@ -1017,8 +1027,6 @@ bool InductiveRangeCheckElimination::run( return Changed; } LoopStructure LS = *MaybeLoopStructure; - if (!isProfitableToTransform(*L, LS)) - return Changed; const SCEVAddRecExpr *IndVar = cast(SE.getMinusSCEV(SE.getSCEV(LS.IndVarBase), SE.getSCEV(LS.IndVarStep))); From 4b5e7fa4de54e00df007ae5e2675393fd046aa59 Mon Sep 17 00:00:00 2001 From: Timm Baeder Date: Wed, 4 Dec 2024 11:25:04 +0100 Subject: [PATCH 011/593] [clang][bytecode] Handle bitcasts involving bitfields (#116843) Copy the data one bit at a time, leaving optimizations for future work. Adds a BitcastBuffer that takes care of pushing the bits in the right order. --- clang/lib/AST/ByteCode/BitcastBuffer.cpp | 95 ++++ clang/lib/AST/ByteCode/BitcastBuffer.h | 88 ++++ clang/lib/AST/ByteCode/Boolean.h | 4 +- clang/lib/AST/ByteCode/Integral.h | 1 + .../lib/AST/ByteCode/InterpBuiltinBitCast.cpp | 284 +++++------- clang/lib/AST/CMakeLists.txt | 1 + .../ByteCode/builtin-bit-cast-bitfields.cpp | 437 ++++++++++++++++++ clang/test/AST/ByteCode/builtin-bit-cast.cpp | 119 ++--- .../unittests/AST/ByteCode/BitcastBuffer.cpp | 87 ++++ clang/unittests/AST/ByteCode/CMakeLists.txt | 1 + 10 files changed, 857 insertions(+), 260 deletions(-) create mode 100644 clang/lib/AST/ByteCode/BitcastBuffer.cpp create mode 100644 clang/lib/AST/ByteCode/BitcastBuffer.h create mode 100644 clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp create mode 100644 clang/unittests/AST/ByteCode/BitcastBuffer.cpp diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.cpp b/clang/lib/AST/ByteCode/BitcastBuffer.cpp new file mode 100644 index 0000000000000..0cc97b0b6bf19 --- /dev/null +++ b/clang/lib/AST/ByteCode/BitcastBuffer.cpp @@ -0,0 +1,95 @@ +//===-------------------- Bitcastbuffer.cpp ---------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#include "BitcastBuffer.h" + +using namespace clang; +using namespace clang::interp; + +/// Returns the value of the bit in the given sequence of bytes. +static inline bool bitof(const std::byte *B, Bits BitIndex) { + return (B[BitIndex.roundToBytes()] & + (std::byte{1} << BitIndex.getOffsetInByte())) != std::byte{0}; +} + +void BitcastBuffer::pushData(const std::byte *In, Bits BitOffset, Bits BitWidth, + Endian TargetEndianness) { + for (unsigned It = 0; It != BitWidth.getQuantity(); ++It) { + bool BitValue = bitof(In, Bits(It)); + if (!BitValue) + continue; + + Bits DstBit; + if (TargetEndianness == Endian::Little) + DstBit = BitOffset + Bits(It); + else + DstBit = size() - BitOffset - BitWidth + Bits(It); + + size_t DstByte = DstBit.roundToBytes(); + Data[DstByte] |= std::byte{1} << DstBit.getOffsetInByte(); + } +} + +std::unique_ptr +BitcastBuffer::copyBits(Bits BitOffset, Bits BitWidth, Bits FullBitWidth, + Endian TargetEndianness) const { + assert(BitWidth.getQuantity() <= FullBitWidth.getQuantity()); + assert(FullBitWidth.isFullByte()); + auto Out = std::make_unique(FullBitWidth.roundToBytes()); + + for (unsigned It = 0; It != BitWidth.getQuantity(); ++It) { + Bits BitIndex; + if (TargetEndianness == Endian::Little) + BitIndex = BitOffset + Bits(It); + else + BitIndex = size() - BitWidth - BitOffset + Bits(It); + + bool BitValue = bitof(Data.get(), BitIndex); + if (!BitValue) + continue; + + Bits DstBit = Bits(It); + size_t DstByte = DstBit.roundToBytes(); + Out[DstByte] |= std::byte{1} << DstBit.getOffsetInByte(); + } + + return Out; +} + +#if 0 + template + static std::string hex(T t) { + std::stringstream stream; + stream << std::hex << (int)t; + return std::string(stream.str()); + } + + + void BitcastBuffer::dump(bool AsHex = true) const { + llvm::errs() << "LSB\n "; + unsigned LineLength = 0; + for (unsigned I = 0; I != (FinalBitSize / 8); ++I) { + std::byte B = Data[I]; + if (AsHex) { + std::stringstream stream; + stream << std::hex << (int)B; + llvm::errs() << stream.str(); + LineLength += stream.str().size() + 1; + } else { + llvm::errs() << std::bitset<8>((int)B).to_string(); + LineLength += 8 + 1; + // llvm::errs() << (int)B; + } + llvm::errs() << ' '; + } + llvm::errs() << '\n'; + + for (unsigned I = 0; I != LineLength; ++I) + llvm::errs() << ' '; + llvm::errs() << "MSB\n"; + } +#endif diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.h b/clang/lib/AST/ByteCode/BitcastBuffer.h new file mode 100644 index 0000000000000..8442df5c60cf5 --- /dev/null +++ b/clang/lib/AST/ByteCode/BitcastBuffer.h @@ -0,0 +1,88 @@ +//===--------------------- BitcastBuffer.h ----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_AST_INTERP_BITCAST_BUFFER_H +#define LLVM_CLANG_AST_INTERP_BITCAST_BUFFER_H + +#include +#include +#include + +namespace clang { +namespace interp { + +enum class Endian { Little, Big }; + +/// A quantity in bits. +struct Bits { + size_t N = 0; + Bits() = default; + static Bits zero() { return Bits(0); } + explicit Bits(size_t Quantity) : N(Quantity) {} + size_t getQuantity() const { return N; } + size_t roundToBytes() const { return N / 8; } + size_t getOffsetInByte() const { return N % 8; } + bool isFullByte() const { return N % 8 == 0; } + bool nonZero() const { return N != 0; } + + Bits operator-(Bits Other) { return Bits(N - Other.N); } + Bits operator+(Bits Other) { return Bits(N + Other.N); } + Bits operator+=(size_t O) { + N += O; + return *this; + } + + bool operator>=(Bits Other) { return N >= Other.N; } +}; + +/// A quantity in bytes. +struct Bytes { + size_t N; + explicit Bytes(size_t Quantity) : N(Quantity) {} + size_t getQuantity() const { return N; } + Bits toBits() const { return Bits(N * 8); } +}; + +/// Track what bits have been initialized to known values and which ones +/// have indeterminate value. +struct BitcastBuffer { + Bits FinalBitSize; + std::unique_ptr Data; + + BitcastBuffer(Bits FinalBitSize) : FinalBitSize(FinalBitSize) { + assert(FinalBitSize.isFullByte()); + unsigned ByteSize = FinalBitSize.roundToBytes(); + Data = std::make_unique(ByteSize); + } + + /// Returns the buffer size in bits. + Bits size() const { return FinalBitSize; } + + /// Returns \c true if all bits in the buffer have been initialized. + bool allInitialized() const { + // FIXME: Implement. + return true; + } + + /// Push \p BitWidth bits at \p BitOffset from \p In into the buffer. + /// \p TargetEndianness is the endianness of the target we're compiling for. + /// \p In must hold at least \p BitWidth many bits. + void pushData(const std::byte *In, Bits BitOffset, Bits BitWidth, + Endian TargetEndianness); + + /// Copy \p BitWidth bits at offset \p BitOffset from the buffer. + /// \p TargetEndianness is the endianness of the target we're compiling for. + /// + /// The returned output holds exactly (\p FullBitWidth / 8) bytes. + std::unique_ptr copyBits(Bits BitOffset, Bits BitWidth, + Bits FullBitWidth, + Endian TargetEndianness) const; +}; + +} // namespace interp +} // namespace clang +#endif diff --git a/clang/lib/AST/ByteCode/Boolean.h b/clang/lib/AST/ByteCode/Boolean.h index 78d75e75c7531..8380e85865ac5 100644 --- a/clang/lib/AST/ByteCode/Boolean.h +++ b/clang/lib/AST/ByteCode/Boolean.h @@ -82,9 +82,7 @@ class Boolean final { Boolean truncate(unsigned TruncBits) const { return *this; } static Boolean bitcastFromMemory(const std::byte *Buff, unsigned BitWidth) { - // Boolean width is currently always 8 for all supported targets. If this - // changes we need to get the bool width from the target info. - assert(BitWidth == 8); + // Just load the first byte. bool Val = static_cast(*Buff); return Boolean(Val); } diff --git a/clang/lib/AST/ByteCode/Integral.h b/clang/lib/AST/ByteCode/Integral.h index cb81b5a698924..26585799e5ead 100644 --- a/clang/lib/AST/ByteCode/Integral.h +++ b/clang/lib/AST/ByteCode/Integral.h @@ -183,6 +183,7 @@ template class Integral final { } Integral truncate(unsigned TruncBits) const { + assert(TruncBits >= 1); if (TruncBits >= Bits) return *this; const ReprT BitMask = (ReprT(1) << ReprT(TruncBits)) - 1; diff --git a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp index b1230f92ddf1d..2fae7f873ab11 100644 --- a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp +++ b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// #include "InterpBuiltinBitCast.h" +#include "BitcastBuffer.h" #include "Boolean.h" #include "Context.h" #include "Floating.h" @@ -21,9 +22,19 @@ using namespace clang; using namespace clang::interp; +/// Implement __builtin_bit_cast and related operations. +/// Since our internal representation for data is more complex than +/// something we can simply memcpy or memcmp, we first bitcast all the data +/// into a buffer, which we then later use to copy the data into the target. + +// TODO: +// - Try to minimize heap allocations. +// - Optimize the common case of only pushing and pulling full +// bytes to/from the buffer. + /// Used to iterate over pointer fields. using DataFunc = llvm::function_ref; + Bits BitOffset, bool PackedBools)>; #define BITCAST_TYPE_SWITCH(Expr, B) \ do { \ @@ -61,156 +72,72 @@ using DataFunc = llvm::function_ref Data; - - BitcastBuffer() = default; - - size_t size() const { return SizeInBits; } - - const std::byte *data() const { return Data.data(); } - - std::byte *getBytes(unsigned BitOffset) const { - assert(BitOffset % 8 == 0); - assert(BitOffset < SizeInBits); - return const_cast(data() + (BitOffset / 8)); - } - - bool allInitialized() const { - // FIXME: Implement. - return true; - } - - bool atByteBoundary() const { return (Data.size() * 8) == SizeInBits; } - - void pushBit(bool Value) { - if (atByteBoundary()) - Data.push_back(std::byte{0}); - - if (Value) - Data.back() |= (std::byte{1} << (SizeInBits % 8)); - ++SizeInBits; - } - - void pushData(const std::byte *data, size_t BitWidth, bool BigEndianTarget) { - bool OnlyFullBytes = BitWidth % 8 == 0; - unsigned NBytes = BitWidth / 8; - - size_t BitsHandled = 0; - // Read all full bytes first - for (size_t I = 0; I != NBytes; ++I) { - std::byte B = - BigEndianTarget ? data[NBytes - OnlyFullBytes - I] : data[I]; - for (unsigned X = 0; X != 8; ++X) { - pushBit(bitof(B, X)); - ++BitsHandled; - } - } - - if (BitsHandled == BitWidth) - return; - - // Rest of the bits. - assert((BitWidth - BitsHandled) < 8); - std::byte B = BigEndianTarget ? data[0] : data[NBytes]; - for (size_t I = 0, E = (BitWidth - BitsHandled); I != E; ++I) { - pushBit(bitof(B, I)); - ++BitsHandled; - } - - assert(BitsHandled == BitWidth); - } -}; - -/// We use this to recursively iterate over all fields and elemends of a pointer +/// We use this to recursively iterate over all fields and elements of a pointer /// and extract relevant data for a bitcast. -static bool enumerateData(const Pointer &P, const Context &Ctx, size_t Offset, - DataFunc F) { +static bool enumerateData(const Pointer &P, const Context &Ctx, Bits Offset, + Bits BitsToRead, DataFunc F) { const Descriptor *FieldDesc = P.getFieldDesc(); assert(FieldDesc); // Primitives. if (FieldDesc->isPrimitive()) - return F(P, FieldDesc->getPrimType(), Offset, false); + return F(P, FieldDesc->getPrimType(), Offset, /*PackedBools=*/false); // Primitive arrays. if (FieldDesc->isPrimitiveArray()) { - bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); QualType ElemType = FieldDesc->getElemQualType(); size_t ElemSizeInBits = Ctx.getASTContext().getTypeSize(ElemType); PrimType ElemT = *Ctx.classify(ElemType); // Special case, since the bools here are packed. bool PackedBools = FieldDesc->getType()->isExtVectorBoolType(); + unsigned NumElems = FieldDesc->getNumElems(); bool Ok = true; - for (unsigned I = 0; I != FieldDesc->getNumElems(); ++I) { - unsigned Index = BigEndianTarget ? (FieldDesc->getNumElems() - 1 - I) : I; - Ok = Ok && F(P.atIndex(Index), ElemT, Offset, PackedBools); - Offset += ElemSizeInBits; + for (unsigned I = P.getIndex(); I != NumElems; ++I) { + Ok = Ok && F(P.atIndex(I), ElemT, Offset, PackedBools); + Offset += PackedBools ? 1 : ElemSizeInBits; + if (Offset >= BitsToRead) + break; } return Ok; } // Composite arrays. if (FieldDesc->isCompositeArray()) { - bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); QualType ElemType = FieldDesc->getElemQualType(); size_t ElemSizeInBits = Ctx.getASTContext().getTypeSize(ElemType); for (unsigned I = 0; I != FieldDesc->getNumElems(); ++I) { - unsigned Index = BigEndianTarget ? (FieldDesc->getNumElems() - 1 - I) : I; - enumerateData(P.atIndex(Index).narrow(), Ctx, Offset, F); + enumerateData(P.atIndex(I).narrow(), Ctx, Offset, BitsToRead, F); Offset += ElemSizeInBits; + if (Offset >= BitsToRead) + break; } return true; } // Records. if (FieldDesc->isRecord()) { - bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); const Record *R = FieldDesc->ElemRecord; const ASTRecordLayout &Layout = Ctx.getASTContext().getASTRecordLayout(R->getDecl()); bool Ok = true; - auto enumerateFields = [&]() -> void { - for (unsigned I = 0, N = R->getNumFields(); I != N; ++I) { - const Record::Field *Fi = - R->getField(BigEndianTarget ? (N - 1 - I) : I); - Pointer Elem = P.atField(Fi->Offset); - size_t BitOffset = - Offset + Layout.getFieldOffset(Fi->Decl->getFieldIndex()); - Ok = Ok && enumerateData(Elem, Ctx, BitOffset, F); - } - }; - auto enumerateBases = [&]() -> void { - for (unsigned I = 0, N = R->getNumBases(); I != N; ++I) { - const Record::Base *B = R->getBase(BigEndianTarget ? (N - 1 - I) : I); - Pointer Elem = P.atField(B->Offset); - CharUnits ByteOffset = - Layout.getBaseClassOffset(cast(B->Decl)); - size_t BitOffset = Offset + Ctx.getASTContext().toBits(ByteOffset); - Ok = Ok && enumerateData(Elem, Ctx, BitOffset, F); - } - }; - - if (BigEndianTarget) { - enumerateFields(); - enumerateBases(); - } else { - enumerateBases(); - enumerateFields(); + for (const Record::Field &Fi : R->fields()) { + Pointer Elem = P.atField(Fi.Offset); + Bits BitOffset = + Offset + Bits(Layout.getFieldOffset(Fi.Decl->getFieldIndex())); + Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); + } + for (const Record::Base &B : R->bases()) { + Pointer Elem = P.atField(B.Offset); + CharUnits ByteOffset = + Layout.getBaseClassOffset(cast(B.Decl)); + Bits BitOffset = Offset + Bits(Ctx.getASTContext().toBits(ByteOffset)); + Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); } return Ok; @@ -220,8 +147,8 @@ static bool enumerateData(const Pointer &P, const Context &Ctx, size_t Offset, } static bool enumeratePointerFields(const Pointer &P, const Context &Ctx, - DataFunc F) { - return enumerateData(P, Ctx, 0, F); + Bits BitsToRead, DataFunc F) { + return enumerateData(P, Ctx, Bits::zero(), BitsToRead, F); } // This function is constexpr if and only if To, From, and the types of @@ -295,62 +222,57 @@ static bool CheckBitcastType(InterpState &S, CodePtr OpPC, QualType T, static bool readPointerToBuffer(const Context &Ctx, const Pointer &FromPtr, BitcastBuffer &Buffer, bool ReturnOnUninit) { const ASTContext &ASTCtx = Ctx.getASTContext(); - bool SwapData = (ASTCtx.getTargetInfo().isLittleEndian() != - llvm::sys::IsLittleEndianHost); - bool BigEndianTarget = ASTCtx.getTargetInfo().isBigEndian(); + Endian TargetEndianness = + ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; return enumeratePointerFields( - FromPtr, Ctx, - [&](const Pointer &P, PrimType T, size_t BitOffset, + FromPtr, Ctx, Buffer.size(), + [&](const Pointer &P, PrimType T, Bits BitOffset, bool PackedBools) -> bool { - if (!P.isInitialized()) { - assert(false && "Implement uninitialized value tracking"); - return ReturnOnUninit; - } + // if (!P.isInitialized()) { + // assert(false && "Implement uninitialized value tracking"); + // return ReturnOnUninit; + // } - assert(P.isInitialized()); + // assert(P.isInitialized()); // nullptr_t is a PT_Ptr for us, but it's still not std::is_pointer_v. if (T == PT_Ptr) assert(false && "Implement casting to pointer types"); CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); - unsigned BitWidth = ASTCtx.toBits(ObjectReprChars); - llvm::SmallVector Buff(ObjectReprChars.getQuantity()); + Bits BitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); + Bits FullBitWidth = BitWidth; + auto Buff = + std::make_unique(ObjectReprChars.getQuantity()); // Work around floating point types that contain unused padding bytes. // This is really just `long double` on x86, which is the only // fundamental type with padding bytes. if (T == PT_Float) { const Floating &F = P.deref(); - unsigned NumBits = - llvm::APFloatBase::getSizeInBits(F.getAPFloat().getSemantics()); - assert(NumBits % 8 == 0); - assert(NumBits <= (ObjectReprChars.getQuantity() * 8)); - F.bitcastToMemory(Buff.data()); + Bits NumBits = Bits( + llvm::APFloatBase::getSizeInBits(F.getAPFloat().getSemantics())); + assert(NumBits.isFullByte()); + assert(NumBits.getQuantity() <= FullBitWidth.getQuantity()); + F.bitcastToMemory(Buff.get()); // Now, only (maybe) swap the actual size of the float, excluding the // padding bits. - if (SwapData) - swapBytes(Buff.data(), NumBits / 8); + if (llvm::sys::IsBigEndianHost) + swapBytes(Buff.get(), NumBits.roundToBytes()); } else { if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) - BitWidth = FD->getBitWidthValue(ASTCtx); + BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), + (unsigned)FullBitWidth.getQuantity())); else if (T == PT_Bool && PackedBools) - BitWidth = 1; - - BITCAST_TYPE_SWITCH(T, { - T Val = P.deref(); - Val.bitcastToMemory(Buff.data()); - }); - if (SwapData) - swapBytes(Buff.data(), ObjectReprChars.getQuantity()); - } + BitWidth = Bits(1); - if (BitWidth != (Buff.size() * 8) && BigEndianTarget) { - Buffer.pushData(Buff.data() + (Buff.size() - 1 - (BitWidth / 8)), - BitWidth, BigEndianTarget); - } else { - Buffer.pushData(Buff.data(), BitWidth, BigEndianTarget); + BITCAST_TYPE_SWITCH(T, { P.deref().bitcastToMemory(Buff.get()); }); + + if (llvm::sys::IsBigEndianHost) + swapBytes(Buff.get(), FullBitWidth.roundToBytes()); } + + Buffer.pushData(Buff.get(), BitOffset, BitWidth, TargetEndianness); return true; }); } @@ -362,16 +284,21 @@ bool clang::interp::DoBitCast(InterpState &S, CodePtr OpPC, const Pointer &Ptr, assert(Ptr.isBlockPointer()); assert(Buff); - BitcastBuffer Buffer; + Bits BitSize = Bytes(BuffSize).toBits(); + BitcastBuffer Buffer(BitSize); if (!CheckBitcastType(S, OpPC, Ptr.getType(), /*IsToType=*/false)) return false; bool Success = readPointerToBuffer(S.getContext(), Ptr, Buffer, /*ReturnOnUninit=*/false); - assert(Buffer.size() == BuffSize * 8); - HasIndeterminateBits = !Buffer.allInitialized(); - std::memcpy(Buff, Buffer.data(), BuffSize); + + const ASTContext &ASTCtx = S.getASTContext(); + Endian TargetEndianness = + ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; + auto B = Buffer.copyBits(Bits::zero(), BitSize, BitSize, TargetEndianness); + + std::memcpy(Buff, B.get(), BuffSize); if (llvm::sys::IsBigEndianHost) swapBytes(Buff, BuffSize); @@ -393,43 +320,60 @@ bool clang::interp::DoBitCastPtr(InterpState &S, CodePtr OpPC, if (!CheckBitcastType(S, OpPC, FromType, /*IsToType=*/false)) return false; - BitcastBuffer Buffer; + const ASTContext &ASTCtx = S.getASTContext(); + + CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(ToType); + BitcastBuffer Buffer(Bits(ASTCtx.toBits(ObjectReprChars))); readPointerToBuffer(S.getContext(), FromPtr, Buffer, /*ReturnOnUninit=*/false); // Now read the values out of the buffer again and into ToPtr. - const ASTContext &ASTCtx = S.getASTContext(); - size_t BitOffset = 0; + Endian TargetEndianness = + ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; bool Success = enumeratePointerFields( - ToPtr, S.getContext(), - [&](const Pointer &P, PrimType T, size_t _, bool PackedBools) -> bool { + ToPtr, S.getContext(), Buffer.size(), + [&](const Pointer &P, PrimType T, Bits BitOffset, + bool PackedBools) -> bool { + CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); + Bits FullBitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); if (T == PT_Float) { - CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); const auto &Semantics = ASTCtx.getFloatTypeSemantics(P.getType()); - unsigned NumBits = llvm::APFloatBase::getSizeInBits(Semantics); - assert(NumBits % 8 == 0); - assert(NumBits <= ASTCtx.toBits(ObjectReprChars)); - std::byte *M = Buffer.getBytes(BitOffset); + Bits NumBits = Bits(llvm::APFloatBase::getSizeInBits(Semantics)); + assert(NumBits.isFullByte()); + assert(NumBits.getQuantity() <= FullBitWidth.getQuantity()); + auto M = Buffer.copyBits(BitOffset, NumBits, FullBitWidth, + TargetEndianness); if (llvm::sys::IsBigEndianHost) - swapBytes(M, NumBits / 8); + swapBytes(M.get(), NumBits.roundToBytes()); - P.deref() = Floating::bitcastFromMemory(M, Semantics); + P.deref() = Floating::bitcastFromMemory(M.get(), Semantics); P.initialize(); - BitOffset += ASTCtx.toBits(ObjectReprChars); return true; } - BITCAST_TYPE_SWITCH_FIXED_SIZE(T, { - std::byte *M = Buffer.getBytes(BitOffset); + Bits BitWidth; + if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) + BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), + (unsigned)FullBitWidth.getQuantity())); + else if (T == PT_Bool && PackedBools) + BitWidth = Bits(1); + else + BitWidth = FullBitWidth; - if (llvm::sys::IsBigEndianHost) - swapBytes(M, T::bitWidth() / 8); + auto Memory = Buffer.copyBits(BitOffset, BitWidth, FullBitWidth, + TargetEndianness); + if (llvm::sys::IsBigEndianHost) + swapBytes(Memory.get(), FullBitWidth.roundToBytes()); - P.deref() = T::bitcastFromMemory(M, T::bitWidth()); - P.initialize(); - BitOffset += T::bitWidth(); + BITCAST_TYPE_SWITCH_FIXED_SIZE(T, { + if (BitWidth.nonZero()) + P.deref() = T::bitcastFromMemory(Memory.get(), T::bitWidth()) + .truncate(BitWidth.getQuantity()); + else + P.deref() = T::zero(); }); + P.initialize(); return true; }); diff --git a/clang/lib/AST/CMakeLists.txt b/clang/lib/AST/CMakeLists.txt index 52c6a45de9a26..cb13c5225b713 100644 --- a/clang/lib/AST/CMakeLists.txt +++ b/clang/lib/AST/CMakeLists.txt @@ -65,6 +65,7 @@ add_clang_library(clangAST ExternalASTSource.cpp FormatString.cpp InheritViz.cpp + ByteCode/BitcastBuffer.cpp ByteCode/ByteCodeEmitter.cpp ByteCode/Compiler.cpp ByteCode/Context.cpp diff --git a/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp b/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp new file mode 100644 index 0000000000000..1bb44f4f13443 --- /dev/null +++ b/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp @@ -0,0 +1,437 @@ +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -triple aarch64_be-linux-gnu -fexperimental-new-constant-interpreter %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter -triple powerpc64le-unknown-unknown -mabi=ieeelongdouble %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter -triple powerpc64-unknown-unknown -mabi=ieeelongdouble %s + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define LITTLE_END 1 +#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define LITTLE_END 0 +#else +# error "huh?" +#endif + +typedef decltype(nullptr) nullptr_t; +typedef __INTPTR_TYPE__ intptr_t; +typedef unsigned __INT16_TYPE__ uint16_t; +typedef unsigned __INT32_TYPE__ uint32_t; +typedef unsigned __INT64_TYPE__ uint64_t; + +static_assert(sizeof(int) == 4); +static_assert(sizeof(long long) == 8); + +template +constexpr To bit_cast(const From &from) { + static_assert(sizeof(To) == sizeof(From)); + return __builtin_bit_cast(To, from); +} + +template +constexpr bool check_round_trip(const Init &init) { + return bit_cast(bit_cast(init)) == init; +} + +template +constexpr Init round_trip(const Init &init) { + return bit_cast(bit_cast(init)); +} + +namespace std { +enum byte : unsigned char {}; +} // namespace std + +template +struct bits { + T : Pad; + T bits : N; + + constexpr bool operator==(const T& rhs) const { + return bits == rhs; + } +}; + +template +constexpr bool operator==(const struct bits& lhs, const struct bits& rhs) { + return lhs.bits == rhs.bits; +} + +template +struct bytes { + using size_t = unsigned int; + unsigned char d[N]; + + constexpr unsigned char operator[](size_t index) { + if (index < N) + return d[index]; + return -1; + } +}; + +namespace Sanity { + /// This is just one byte, and we extract 2 bits from it. + /// + /// 3 is 0000'0011. + /// For both LE and BE, the buffer will contain exactly that + /// byte, unaltered and not reordered in any way. It contains all 8 bits. + static_assert(__builtin_bit_cast(bits<2>, (unsigned char)3) == (LITTLE_END ? 3 : 0)); + + /// Similarly, we have one full byte of data, with the two most-significant + /// bits set: + /// 192 is 1100'0000 + static_assert(__builtin_bit_cast(bits<2>, (unsigned char)192) == (LITTLE_END ? 0 : 3)); + + + /// Here we are instead bitcasting two 1-bits into a destination of 8 bits. + /// On LE, we should pick the two least-significant bits. On BE, the opposite. + /// NOTE: Can't verify this with gcc. + constexpr auto B1 = bits<2>{3}; + static_assert(__builtin_bit_cast(unsigned char, B1) == (LITTLE_END ? 3 : 192)); + + /// This should be 0000'0110. + /// On LE, this should result in 6. + /// On BE, 1100'0000 = 192. + constexpr auto B2 = bits<3>{6}; + static_assert(__builtin_bit_cast(unsigned char, B2) == (LITTLE_END ? 6 : 192)); + + constexpr auto B3 = bits<4>{6}; + static_assert(__builtin_bit_cast(unsigned char, B3) == (LITTLE_END ? 6 : 96)); + + struct B { + std::byte b0 : 4; + std::byte b1 : 4; + }; + + /// We can properly decompose one byte (8 bit) int two 4-bit bitfields. + constexpr struct { unsigned char b0; } T = {0xee}; + constexpr B MB = __builtin_bit_cast(B, T); + static_assert(MB.b0 == 0xe); + static_assert(MB.b1 == 0xe); +} + +namespace BitFields { + struct BitFields { + unsigned a : 2; + unsigned b : 30; + }; + + constexpr unsigned A = __builtin_bit_cast(unsigned, BitFields{3, 16}); + static_assert(A == (LITTLE_END ? 67 : 3221225488)); + + struct S { + unsigned a : 2; + unsigned b : 28; + unsigned c : 2; + }; + + constexpr S s = __builtin_bit_cast(S, 0xFFFFFFFF); + static_assert(s.a == 3); + static_assert(s.b == 268435455); + static_assert(s.c == 3); + + void bitfield_indeterminate() { + struct BF { unsigned char z : 2; }; + enum byte : unsigned char {}; + + constexpr BF bf = {0x3}; + /// Requires bitcasts to composite types. + static_assert(bit_cast>(bf).bits == bf.z); + static_assert(bit_cast(bf)); + + static_assert(__builtin_bit_cast(byte, bf)); + + struct M { + // ref-note@+1 {{subobject declared here}} + unsigned char mem[sizeof(BF)]; + }; + // ref-error@+2 {{initialized by a constant expression}} + // ref-note@+1 {{not initialized}} + constexpr M m = bit_cast(bf); + + constexpr auto f = []() constexpr { + // bits<24, unsigned int, LITTLE_END ? 0 : 8> B = {0xc0ffee}; + constexpr struct { unsigned short b1; unsigned char b0; } B = {0xc0ff, 0xee}; + return bit_cast>(B); + }; + + static_assert(f()[0] + f()[1] + f()[2] == 0xc0 + 0xff + 0xee); + { + // ref-error@+2 {{initialized by a constant expression}} + // ref-note@+1 {{read of uninitialized object is not allowed in a constant expression}} + constexpr auto _bad = f()[3]; + } + + struct B { + unsigned short s0 : 8; + unsigned short s1 : 8; + std::byte b0 : 4; + std::byte b1 : 4; + std::byte b2 : 4; + }; + constexpr auto g = [f]() constexpr { + return bit_cast(f()); + }; + static_assert(g().s0 + g().s1 + g().b0 + g().b1 == 0xc0 + 0xff + 0xe + 0xe); + { + // ref-error@+2 {{initialized by a constant expression}} + // ref-note@+1 {{read of uninitialized object is not allowed in a constant expression}} + constexpr auto _bad = g().b2; + } + } +} + +namespace BoolVectors { + typedef bool bool32 __attribute__((ext_vector_type(32))); + constexpr auto v = bit_cast(0xa1c0ffee); +#if LITTLE_END + static_assert(!v[0]); + static_assert(v[1]); + static_assert(v[2]); + static_assert(v[3]); + static_assert(!v[4]); + static_assert(v[5]); + static_assert(v[6]); + static_assert(v[7]); + + static_assert(v[8]); + static_assert(v[9]); + static_assert(v[10]); + static_assert(v[11]); + static_assert(v[12]); + static_assert(v[13]); + static_assert(v[14]); + static_assert(v[15]); + + static_assert(!v[16]); + static_assert(!v[17]); + static_assert(!v[18]); + static_assert(!v[19]); + static_assert(!v[20]); + static_assert(!v[21]); + static_assert(v[22]); + static_assert(v[23]); + + static_assert(v[24]); + static_assert(!v[25]); + static_assert(!v[26]); + static_assert(!v[27]); + static_assert(!v[28]); + static_assert(v[29]); + static_assert(!v[30]); + static_assert(v[31]); + +#else + static_assert(v[0]); + static_assert(!v[1]); + static_assert(v[2]); + static_assert(!v[3]); + static_assert(!v[4]); + static_assert(!v[5]); + static_assert(!v[6]); + static_assert(v[7]); + + static_assert(v[8]); + static_assert(v[9]); + static_assert(!v[10]); + static_assert(!v[11]); + static_assert(!v[12]); + static_assert(!v[13]); + static_assert(!v[14]); + static_assert(!v[15]); + + static_assert(v[16]); + static_assert(v[17]); + static_assert(v[18]); + static_assert(v[19]); + static_assert(v[20]); + static_assert(v[21]); + static_assert(v[22]); + static_assert(v[23]); + + static_assert(v[24]); + static_assert(v[25]); + static_assert(v[26]); + static_assert(!v[27]); + static_assert(v[28]); + static_assert(v[29]); + static_assert(v[30]); + static_assert(!v[31]); +#endif + + struct pad { + unsigned short s; + unsigned char c; + }; + + constexpr auto p = bit_cast(v); + static_assert(p.s == (LITTLE_END ? 0xffee : 0xa1c0)); + static_assert(p.c == (LITTLE_END ? 0xc0 : 0xff)); +} + +namespace TwoShorts { + struct B { + unsigned short s0 : 8; + unsigned short s1 : 8; + }; + constexpr struct { unsigned short b1;} T = {0xc0ff}; + constexpr B MB = __builtin_bit_cast(B, T); +#if LITTLE_END + static_assert(MB.s0 == 0xff); + static_assert(MB.s1 == 0xc0); +#else + static_assert(MB.s0 == 0xc0); + static_assert(MB.s1 == 0xff); + +#endif +} + +typedef bool bool8 __attribute__((ext_vector_type(8))); +typedef bool bool9 __attribute__((ext_vector_type(9))); +typedef bool bool16 __attribute__((ext_vector_type(16))); +typedef bool bool17 __attribute__((ext_vector_type(17))); +typedef bool bool32 __attribute__((ext_vector_type(32))); +typedef bool bool128 __attribute__((ext_vector_type(128))); + +static_assert(bit_cast(bool8{1,0,1,0,1,0,1,0}) == (LITTLE_END ? 0x55 : 0xAA), ""); +constexpr bool8 b8 = __builtin_bit_cast(bool8, 0x55); // both-error {{'__builtin_bit_cast' source type 'int' does not match destination type 'bool8' (vector of 8 'bool' values) (4 vs 1 bytes)}} +static_assert(check_round_trip(static_cast(0)), ""); +static_assert(check_round_trip(static_cast(1)), ""); +static_assert(check_round_trip(static_cast(0x55)), ""); + +static_assert(bit_cast(bool16{1,1,1,1,1,0,0,0, 1,1,1,1,0,1,0,0}) == (LITTLE_END ? 0x2F1F : 0xF8F4), ""); + +static_assert(check_round_trip(static_cast(0xCAFE)), ""); +static_assert(check_round_trip(static_cast(0xCAFEBABE)), ""); +static_assert(check_round_trip(static_cast<__int128_t>(0xCAFEBABE0C05FEFEULL)), ""); + +static_assert(bit_cast, uint16_t>(0xcafe) == (LITTLE_END ? 0x95 : 0x7f)); +static_assert(bit_cast, uint16_t>(0xcafe) == (LITTLE_END ? 0x2 : 0xf)); +static_assert(bit_cast, uint32_t>(0xa1cafe) == (LITTLE_END ? 0x4 : 0x5)); + +struct S { + // little endian: + // MSB .... .... LSB + // |y| |x| + // + // big endian + // MSB .... .... LSB + // |x| |y| + + unsigned char x : 4; + unsigned char y : 4; + + constexpr bool operator==(S const &other) const { + return x == other.x && y == other.y; + } +}; + +constexpr S s{0xa, 0xb}; +static_assert(bit_cast>(s) == (LITTLE_END ? 0xba : 0xab)); +static_assert(bit_cast>(s) == (LITTLE_END + ? 0xba & 0x7f + : (0xab & 0xfe) >> 1)); + +static_assert(round_trip>(s) == s); + +struct R { + unsigned int r : 31; + unsigned int : 0; + unsigned int : 32; + constexpr bool operator==(R const &other) const { + return r == other.r; + } + }; +using T = bits<31, signed long long>; +constexpr R r{0x4ac0ffee}; +constexpr T t = bit_cast(r); +static_assert(t == ((0xFFFFFFFF8 << 28) | 0x4ac0ffee)); // sign extension + +static_assert(round_trip(r) == r); +static_assert(round_trip(t) == t); + + +/// The oversized bitfield is an error on Windows and not just a warning. +#if !defined(_WIN32) +struct U { + // expected-warning@+1 {{exceeds the width of its type}} + uint32_t trunc : 33; + uint32_t u : 31; + constexpr bool operator==(U const &other) const { + return trunc == other.trunc && u == other.u; + } +}; +struct V { + uint64_t notrunc : 32; + uint64_t : 1; + uint64_t v : 31; + constexpr bool operator==(V const &other) const { + return notrunc == other.notrunc && v == other.v; + } +}; + +constexpr U u{static_cast(~0), 0x4ac0ffee}; +constexpr V v = bit_cast(u); +static_assert(v.v == 0x4ac0ffee); + +static_assert(round_trip(u) == u); +static_assert(round_trip(v) == v); + +constexpr auto w = bit_cast>(u); +static_assert(w == (LITTLE_END + ? 0x4ac0ffee & 0xFFF + : (0x4ac0ffee & (0xFFF << (31 - 12))) >> (31-12) + )); +#endif + + +namespace NestedStructures { + struct J { + struct { + uint16_t k : 12; + } K; + struct { + uint16_t l : 4; + } L; + }; + + static_assert(sizeof(J) == 4); + constexpr J j = bit_cast(0x8c0ffee5); + + static_assert(j.K.k == (LITTLE_END ? 0xee5 : 0x8c0)); + static_assert(j.L.l == 0xf /* yay symmetry */); + static_assert(bit_cast>(j) == 0xf); + struct N { + bits<12, uint16_t> k; + uint16_t : 16; + }; + static_assert(bit_cast(j).k == j.K.k); + + struct M { + bits<4, uint16_t, 0> m[2]; + constexpr bool operator==(const M& rhs) const { + return m[0] == rhs.m[0] && m[1] == rhs.m[1]; + }; + }; + #if LITTLE_END == 1 + constexpr uint16_t want[2] = {0x5, 0xf}; + #else + constexpr uint16_t want[2] = {0x8000, 0xf000}; + #endif + + static_assert(bit_cast(j) == bit_cast(want)); +} + +namespace Enums { + // ensure we're packed into the top 2 bits + constexpr int pad = LITTLE_END ? 6 : 0; + struct X + { + char : pad; + enum class direction: char { left, right, up, down } direction : 2; + }; + + constexpr X x = { X::direction::down }; + static_assert(bit_cast>(x) == -1); + static_assert(bit_cast>(x) == 3); + static_assert( + bit_cast((unsigned char)0x40).direction == X::direction::right); +} diff --git a/clang/test/AST/ByteCode/builtin-bit-cast.cpp b/clang/test/AST/ByteCode/builtin-bit-cast.cpp index 0fecde59cd57c..e956675b18b85 100644 --- a/clang/test/AST/ByteCode/builtin-bit-cast.cpp +++ b/clang/test/AST/ByteCode/builtin-bit-cast.cpp @@ -186,72 +186,6 @@ namespace bitint { // ref-note {{initializer of 'IB' is not a constant expression}} } -namespace BitFields { - struct BitFields { - unsigned a : 2; - unsigned b : 30; - }; - - constexpr unsigned A = __builtin_bit_cast(unsigned, BitFields{3, 16}); // ref-error {{must be initialized by a constant expression}} \ - // ref-note {{not yet supported}} \ - // ref-note {{declared here}} - static_assert(A == (LITTLE_END ? 67 : 3221225488)); // ref-error {{not an integral constant expression}} \ - // ref-note {{initializer of 'A'}} - - - void bitfield_indeterminate() { - struct BF { unsigned char z : 2; }; - enum byte : unsigned char {}; - - constexpr BF bf = {0x3}; - /// Requires bitcasts to composite types. - // static_assert(bit_cast>(bf).bits == bf.z); - // static_assert(bit_cast(bf)); - -#if 0 - // static_assert(__builtin_bit_cast(byte, bf)); - - struct M { - // expected-note@+1 {{subobject declared here}} - unsigned char mem[sizeof(BF)]; - }; - // expected-error@+2 {{initialized by a constant expression}} - // expected-note@+1 {{not initialized}} - constexpr M m = bit_cast(bf); - - constexpr auto f = []() constexpr { - // bits<24, unsigned int, LITTLE_END ? 0 : 8> B = {0xc0ffee}; - constexpr struct { unsigned short b1; unsigned char b0; } B = {0xc0ff, 0xee}; - return bit_cast>(B); - }; - - static_assert(f()[0] + f()[1] + f()[2] == 0xc0 + 0xff + 0xee); - { - // expected-error@+2 {{initialized by a constant expression}} - // expected-note@+1 {{read of uninitialized object is not allowed in a constant expression}} - constexpr auto _bad = f()[3]; - } - - struct B { - unsigned short s0 : 8; - unsigned short s1 : 8; - std::byte b0 : 4; - std::byte b1 : 4; - std::byte b2 : 4; - }; - constexpr auto g = [f]() constexpr { - return bit_cast(f()); - }; - static_assert(g().s0 + g().s1 + g().b0 + g().b1 == 0xc0 + 0xff + 0xe + 0xe); - { - // expected-error@+2 {{initialized by a constant expression}} - // expected-note@+1 {{read of uninitialized object is not allowed in a constant expression}} - constexpr auto _bad = g().b2; - } -#endif - } -} - namespace Classes { class A { public: @@ -331,6 +265,21 @@ static_assert(check_round_trip(splice)); #endif +namespace Overread { + /// This used to crash becaus we were reading all elements of the + /// source array even though we should only be reading 1. + constexpr int a[] = {2,3, 4, 5}; + constexpr int b = __builtin_bit_cast(int, *(a + 1)); + static_assert(b == 3); + + struct S { + int a; + }; + constexpr S ss[] = {{1},{2}}; + constexpr int c = __builtin_bit_cast(int, *(ss + 1)); + static_assert(c == 2); +} + /// --------------------------------------------------------------------------- /// From here on, it's things copied from test/SemaCXX/constexpr-builtin-bit.cast.cpp @@ -510,27 +459,6 @@ static_assert(bit_cast(test_vector) == (LITTLE_END static_assert(check_round_trip(0xCAFEBABE0C05FEFEULL), ""); static_assert(check_round_trip(0xCAFEBABE0C05FEFEULL), ""); -typedef bool bool8 __attribute__((ext_vector_type(8))); -typedef bool bool9 __attribute__((ext_vector_type(9))); -typedef bool bool16 __attribute__((ext_vector_type(16))); -typedef bool bool17 __attribute__((ext_vector_type(17))); -typedef bool bool32 __attribute__((ext_vector_type(32))); -typedef bool bool128 __attribute__((ext_vector_type(128))); - -static_assert(bit_cast(bool8{1,0,1,0,1,0,1,0}) == (LITTLE_END ? 0x55 : 0xAA), ""); -constexpr bool8 b8 = __builtin_bit_cast(bool8, 0x55); // both-error {{'__builtin_bit_cast' source type 'int' does not match destination type 'bool8' (vector of 8 'bool' values) (4 vs 1 bytes)}} -#if 0 -static_assert(check_round_trip(static_cast(0)), ""); -static_assert(check_round_trip(static_cast(1)), ""); -static_assert(check_round_trip(static_cast(0x55)), ""); - -static_assert(bit_cast(bool16{1,1,1,1,1,0,0,0, 1,1,1,1,0,1,0,0}) == (LITTLE_END ? 0x2F1F : 0xF8F4), ""); - -static_assert(check_round_trip(static_cast(0xCAFE)), ""); -static_assert(check_round_trip(static_cast(0xCAFEBABE)), ""); -static_assert(check_round_trip(static_cast<__int128_t>(0xCAFEBABE0C05FEFEULL)), ""); -#endif - #if 0 // expected-error@+2 {{constexpr variable 'bad_bool9_to_short' must be initialized by a constant expression}} // expected-note@+1 {{bit_cast involving type 'bool __attribute__((ext_vector_type(9)))' (vector of 9 'bool' values) is not allowed in a constant expression; element size 1 * element count 9 is not a multiple of the byte size 8}} @@ -559,3 +487,20 @@ namespace test_complex { constexpr double D = __builtin_bit_cast(double, test_float_complex); constexpr int M = __builtin_bit_cast(int, test_int_complex); // both-error {{size of '__builtin_bit_cast' source type 'const _Complex unsigned int' does not match destination type 'int' (8 vs 4 bytes)}} } + + +namespace OversizedBitField { +#if defined(_WIN32) + /// This is an error (not just a warning) on Windows and the field ends up with a size of 1 instead of 4. +#else + typedef unsigned __INT16_TYPE__ uint16_t; + typedef unsigned __INT32_TYPE__ uint32_t; + struct S { + uint16_t a : 20; // both-warning {{exceeds the width of its type}} + }; + + static_assert(sizeof(S) == 4); + static_assert(__builtin_bit_cast(S, (uint32_t)32).a == (LITTLE_END ? 32 : 0)); // ref-error {{not an integral constant expression}} \ + // ref-note {{constexpr bit_cast involving bit-field is not yet supported}} +#endif +} diff --git a/clang/unittests/AST/ByteCode/BitcastBuffer.cpp b/clang/unittests/AST/ByteCode/BitcastBuffer.cpp new file mode 100644 index 0000000000000..02c38a2201363 --- /dev/null +++ b/clang/unittests/AST/ByteCode/BitcastBuffer.cpp @@ -0,0 +1,87 @@ +#include "../../../lib/AST/ByteCode/BitcastBuffer.h" +#include "clang/AST/ASTContext.h" +#include "gtest/gtest.h" +#include +#include +#include +#include +#include + +using namespace clang; +using namespace clang::interp; + +TEST(BitcastBuffer, PushData) { + BitcastBuffer Buff1(Bytes(sizeof(int)).toBits()); + + const unsigned V = 0xCAFEBABE; + Bits VSize = Bytes(sizeof(V)).toBits(); + std::byte Data[sizeof(V)]; + std::memcpy(Data, &V, sizeof(V)); + + Endian HostEndianness = + llvm::sys::IsLittleEndianHost ? Endian::Little : Endian::Big; + + Buff1.pushData(Data, Bits::zero(), VSize, HostEndianness); + + // The buffer is in host-endianness. + if (llvm::sys::IsLittleEndianHost) { + ASSERT_EQ(Buff1.Data[0], std::byte{0xbe}); + ASSERT_EQ(Buff1.Data[1], std::byte{0xba}); + ASSERT_EQ(Buff1.Data[2], std::byte{0xfe}); + ASSERT_EQ(Buff1.Data[3], std::byte{0xca}); + } else { + ASSERT_EQ(Buff1.Data[0], std::byte{0xca}); + ASSERT_EQ(Buff1.Data[1], std::byte{0xfe}); + ASSERT_EQ(Buff1.Data[2], std::byte{0xba}); + ASSERT_EQ(Buff1.Data[3], std::byte{0xbe}); + } + + { + unsigned V2; + auto D = Buff1.copyBits(Bits::zero(), VSize, VSize, Endian::Little); + std::memcpy(&V2, D.get(), sizeof(V)); + ASSERT_EQ(V, V2); + + D = Buff1.copyBits(Bits::zero(), VSize, VSize, Endian::Big); + std::memcpy(&V2, D.get(), sizeof(V)); + ASSERT_EQ(V, V2); + } + + BitcastBuffer Buff2(Bytes(sizeof(int)).toBits()); + { + short s1 = 0xCAFE; + short s2 = 0xBABE; + std::byte sdata[2]; + + std::memcpy(sdata, &s1, sizeof(s1)); + Buff2.pushData(sdata, Bits::zero(), Bits(sizeof(s1) * 8), HostEndianness); + std::memcpy(sdata, &s2, sizeof(s2)); + Buff2.pushData(sdata, Bits(sizeof(s1) * 8), Bits(sizeof(s2) * 8), + HostEndianness); + } + + if (llvm::sys::IsLittleEndianHost) { + ASSERT_EQ(Buff2.Data[0], std::byte{0xfe}); + ASSERT_EQ(Buff2.Data[1], std::byte{0xca}); + ASSERT_EQ(Buff2.Data[2], std::byte{0xbe}); + ASSERT_EQ(Buff2.Data[3], std::byte{0xba}); + } else { + ASSERT_EQ(Buff2.Data[0], std::byte{0xba}); + ASSERT_EQ(Buff2.Data[1], std::byte{0xbe}); + ASSERT_EQ(Buff2.Data[2], std::byte{0xca}); + ASSERT_EQ(Buff2.Data[3], std::byte{0xfe}); + } + + { + unsigned V; + auto D = Buff2.copyBits(Bits::zero(), Bits(sizeof(V) * 8), + Bits(sizeof(V) * 8), Endian::Little); + std::memcpy(&V, D.get(), sizeof(V)); + ASSERT_EQ(V, 0xBABECAFE); + + D = Buff2.copyBits(Bits::zero(), Bits(sizeof(V) * 8), Bits(sizeof(V) * 8), + Endian::Big); + std::memcpy(&V, D.get(), sizeof(V)); + ASSERT_EQ(V, 0xBABECAFE); + } +} diff --git a/clang/unittests/AST/ByteCode/CMakeLists.txt b/clang/unittests/AST/ByteCode/CMakeLists.txt index ea727cdd4412b..b862fb4834fbd 100644 --- a/clang/unittests/AST/ByteCode/CMakeLists.txt +++ b/clang/unittests/AST/ByteCode/CMakeLists.txt @@ -1,4 +1,5 @@ add_clang_unittest(InterpTests + BitcastBuffer.cpp Descriptor.cpp toAPValue.cpp ) From 4675db5f394ebadd8a56bb17e2344da5c7779a68 Mon Sep 17 00:00:00 2001 From: David Sherwood Date: Wed, 4 Dec 2024 10:26:51 +0000 Subject: [PATCH 012/593] [DAGCombiner] Add support for scalarising extracts of a vector setcc (#117566) For IR like this: %icmp = icmp ult <4 x i32> %a, splat (i32 5) %res = extractelement <4 x i1> %icmp, i32 1 where there is only one use of %icmp we can take a similar approach to what we already do for binary ops such add, sub, etc. and convert this into %ext = extractelement <4 x i32> %a, i32 1 %res = icmp ult i32 %ext, 5 For AArch64 targets at least the scalar boolean result will almost certainly need to be in a GPR anyway, since it will probably be used by branches for control flow. I've tried to reuse existing code in scalarizeExtractedBinop to also work for setcc. NOTE: The optimisations don't apply for tests such as extract_icmp_v4i32_splat_rhs in the file CodeGen/AArch64/extract-vector-cmp.ll because scalarizeExtractedBinOp only works if one of the input operands is a constant. --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 43 ++-- llvm/lib/Target/AArch64/AArch64ISelLowering.h | 4 + llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 2 +- .../WebAssembly/WebAssemblyISelLowering.cpp | 2 +- llvm/lib/Target/X86/X86ISelLowering.cpp | 2 +- .../AArch64/dag-combine-concat-vectors.ll | 46 ++--- .../CodeGen/AArch64/extract-vector-cmp.ll | 186 ++++++++++++++++++ llvm/test/CodeGen/X86/vselect.ll | 26 +++ 8 files changed, 270 insertions(+), 41 deletions(-) create mode 100644 llvm/test/CodeGen/AArch64/extract-vector-cmp.ll diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 6435a2119077f..e78dd8cdf3e6e 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -22749,16 +22749,22 @@ SDValue DAGCombiner::scalarizeExtractedVectorLoad(SDNode *EVE, EVT InVecVT, /// Transform a vector binary operation into a scalar binary operation by moving /// the math/logic after an extract element of a vector. -static SDValue scalarizeExtractedBinop(SDNode *ExtElt, SelectionDAG &DAG, - const SDLoc &DL, bool LegalOperations) { +static SDValue scalarizeExtractedBinOp(SDNode *ExtElt, SelectionDAG &DAG, + const SDLoc &DL, bool LegalTypes) { const TargetLowering &TLI = DAG.getTargetLoweringInfo(); SDValue Vec = ExtElt->getOperand(0); SDValue Index = ExtElt->getOperand(1); auto *IndexC = dyn_cast(Index); - if (!IndexC || !TLI.isBinOp(Vec.getOpcode()) || !Vec.hasOneUse() || + unsigned Opc = Vec.getOpcode(); + if (!IndexC || !Vec.hasOneUse() || (!TLI.isBinOp(Opc) && Opc != ISD::SETCC) || Vec->getNumValues() != 1) return SDValue(); + EVT ResVT = ExtElt->getValueType(0); + if (Opc == ISD::SETCC && + (ResVT != Vec.getValueType().getVectorElementType() || LegalTypes)) + return SDValue(); + // Targets may want to avoid this to prevent an expensive register transfer. if (!TLI.shouldScalarizeBinop(Vec)) return SDValue(); @@ -22769,19 +22775,24 @@ static SDValue scalarizeExtractedBinop(SDNode *ExtElt, SelectionDAG &DAG, SDValue Op0 = Vec.getOperand(0); SDValue Op1 = Vec.getOperand(1); APInt SplatVal; - if (isAnyConstantBuildVector(Op0, true) || - ISD::isConstantSplatVector(Op0.getNode(), SplatVal) || - isAnyConstantBuildVector(Op1, true) || - ISD::isConstantSplatVector(Op1.getNode(), SplatVal)) { - // extractelt (binop X, C), IndexC --> binop (extractelt X, IndexC), C' - // extractelt (binop C, X), IndexC --> binop C', (extractelt X, IndexC) - EVT VT = ExtElt->getValueType(0); - SDValue Ext0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, Op0, Index); - SDValue Ext1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT, Op1, Index); - return DAG.getNode(Vec.getOpcode(), DL, VT, Ext0, Ext1); - } + if (!isAnyConstantBuildVector(Op0, true) && + !ISD::isConstantSplatVector(Op0.getNode(), SplatVal) && + !isAnyConstantBuildVector(Op1, true) && + !ISD::isConstantSplatVector(Op1.getNode(), SplatVal)) + return SDValue(); - return SDValue(); + // extractelt (op X, C), IndexC --> op (extractelt X, IndexC), C' + // extractelt (op C, X), IndexC --> op C', (extractelt X, IndexC) + if (Opc == ISD::SETCC) { + EVT OpVT = Op0.getValueType().getVectorElementType(); + Op0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, OpVT, Op0, Index); + Op1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, OpVT, Op1, Index); + return DAG.getSetCC(DL, ResVT, Op0, Op1, + cast(Vec->getOperand(2))->get()); + } + Op0 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, ResVT, Op0, Index); + Op1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, ResVT, Op1, Index); + return DAG.getNode(Opc, DL, ResVT, Op0, Op1); } // Given a ISD::EXTRACT_VECTOR_ELT, which is a glorified bit sequence extract, @@ -23014,7 +23025,7 @@ SDValue DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) { } } - if (SDValue BO = scalarizeExtractedBinop(N, DAG, DL, LegalOperations)) + if (SDValue BO = scalarizeExtractedBinOp(N, DAG, DL, LegalTypes)) return BO; if (VecVT.isScalableVector()) diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.h b/llvm/lib/Target/AArch64/AArch64ISelLowering.h index cb0b9e965277a..d51b36f7e4994 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.h +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.h @@ -1348,6 +1348,10 @@ class AArch64TargetLowering : public TargetLowering { unsigned getMinimumJumpTableEntries() const override; bool softPromoteHalfType() const override { return true; } + + bool shouldScalarizeBinop(SDValue VecOp) const override { + return VecOp.getOpcode() == ISD::SETCC; + } }; namespace AArch64 { diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp index cfb7ff7696191..50f4eb19646a2 100644 --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -2093,7 +2093,7 @@ bool RISCVTargetLowering::shouldScalarizeBinop(SDValue VecOp) const { // Assume target opcodes can't be scalarized. // TODO - do we have any exceptions? - if (Opc >= ISD::BUILTIN_OP_END) + if (Opc >= ISD::BUILTIN_OP_END || !isBinOp(Opc)) return false; // If the vector op is not supported, try to convert to scalar. diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp index c765d2b1ab95b..7712570869ff6 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp @@ -429,7 +429,7 @@ bool WebAssemblyTargetLowering::shouldScalarizeBinop(SDValue VecOp) const { // Assume target opcodes can't be scalarized. // TODO - do we have any exceptions? - if (Opc >= ISD::BUILTIN_OP_END) + if (Opc >= ISD::BUILTIN_OP_END || !isBinOp(Opc)) return false; // If the vector op is not supported, try to convert to scalar. diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 2d3bb2ece621e..7b46b109de3b0 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -3306,7 +3306,7 @@ bool X86TargetLowering::shouldScalarizeBinop(SDValue VecOp) const { // Assume target opcodes can't be scalarized. // TODO - do we have any exceptions? - if (Opc >= ISD::BUILTIN_OP_END) + if (Opc >= ISD::BUILTIN_OP_END || !isBinOp(Opc)) return false; // If the vector op is not supported, try to convert to scalar. diff --git a/llvm/test/CodeGen/AArch64/dag-combine-concat-vectors.ll b/llvm/test/CodeGen/AArch64/dag-combine-concat-vectors.ll index 5a5dee0b53d43..4cb1d5b2fb345 100644 --- a/llvm/test/CodeGen/AArch64/dag-combine-concat-vectors.ll +++ b/llvm/test/CodeGen/AArch64/dag-combine-concat-vectors.ll @@ -5,7 +5,7 @@ declare void @llvm.masked.scatter.nxv16i8.nxv16p0(, , i32 immarg, ) -define fastcc i8 @allocno_reload_assign() { +define fastcc i8 @allocno_reload_assign(ptr %p) { ; CHECK-LABEL: allocno_reload_assign: ; CHECK: // %bb.0: ; CHECK-NEXT: fmov d0, xzr @@ -14,8 +14,8 @@ define fastcc i8 @allocno_reload_assign() { ; CHECK-NEXT: cmpeq p0.d, p0/z, z0.d, #0 ; CHECK-NEXT: uzp1 p0.s, p0.s, p0.s ; CHECK-NEXT: uzp1 p0.h, p0.h, p0.h -; CHECK-NEXT: uzp1 p0.b, p0.b, p0.b -; CHECK-NEXT: mov z0.b, p0/z, #1 // =0x1 +; CHECK-NEXT: uzp1 p8.b, p0.b, p0.b +; CHECK-NEXT: mov z0.b, p8/z, #1 // =0x1 ; CHECK-NEXT: fmov w8, s0 ; CHECK-NEXT: mov z0.b, #0 // =0x0 ; CHECK-NEXT: uunpklo z1.h, z0.b @@ -30,34 +30,35 @@ define fastcc i8 @allocno_reload_assign() { ; CHECK-NEXT: punpklo p1.h, p0.b ; CHECK-NEXT: punpkhi p0.h, p0.b ; CHECK-NEXT: punpklo p2.h, p1.b -; CHECK-NEXT: punpkhi p3.h, p1.b +; CHECK-NEXT: punpkhi p4.h, p1.b ; CHECK-NEXT: uunpklo z0.d, z2.s ; CHECK-NEXT: uunpkhi z1.d, z2.s -; CHECK-NEXT: punpklo p5.h, p0.b +; CHECK-NEXT: punpklo p6.h, p0.b ; CHECK-NEXT: uunpklo z2.d, z3.s ; CHECK-NEXT: uunpkhi z3.d, z3.s -; CHECK-NEXT: punpkhi p7.h, p0.b +; CHECK-NEXT: punpkhi p0.h, p0.b ; CHECK-NEXT: uunpklo z4.d, z5.s ; CHECK-NEXT: uunpkhi z5.d, z5.s ; CHECK-NEXT: uunpklo z6.d, z7.s ; CHECK-NEXT: uunpkhi z7.d, z7.s -; CHECK-NEXT: punpklo p0.h, p2.b -; CHECK-NEXT: punpkhi p1.h, p2.b -; CHECK-NEXT: punpklo p2.h, p3.b -; CHECK-NEXT: punpkhi p3.h, p3.b -; CHECK-NEXT: punpklo p4.h, p5.b -; CHECK-NEXT: punpkhi p5.h, p5.b -; CHECK-NEXT: punpklo p6.h, p7.b -; CHECK-NEXT: punpkhi p7.h, p7.b +; CHECK-NEXT: punpklo p1.h, p2.b +; CHECK-NEXT: punpkhi p2.h, p2.b +; CHECK-NEXT: punpklo p3.h, p4.b +; CHECK-NEXT: punpkhi p4.h, p4.b +; CHECK-NEXT: punpklo p5.h, p6.b +; CHECK-NEXT: punpkhi p6.h, p6.b +; CHECK-NEXT: punpklo p7.h, p0.b +; CHECK-NEXT: punpkhi p0.h, p0.b ; CHECK-NEXT: .LBB0_1: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: st1b { z0.d }, p0, [z16.d] -; CHECK-NEXT: st1b { z1.d }, p1, [z16.d] -; CHECK-NEXT: st1b { z2.d }, p2, [z16.d] -; CHECK-NEXT: st1b { z3.d }, p3, [z16.d] -; CHECK-NEXT: st1b { z4.d }, p4, [z16.d] -; CHECK-NEXT: st1b { z5.d }, p5, [z16.d] -; CHECK-NEXT: st1b { z6.d }, p6, [z16.d] -; CHECK-NEXT: st1b { z7.d }, p7, [z16.d] +; CHECK-NEXT: st1b { z0.d }, p1, [z16.d] +; CHECK-NEXT: st1b { z1.d }, p2, [z16.d] +; CHECK-NEXT: st1b { z2.d }, p3, [z16.d] +; CHECK-NEXT: st1b { z3.d }, p4, [z16.d] +; CHECK-NEXT: st1b { z4.d }, p5, [z16.d] +; CHECK-NEXT: st1b { z5.d }, p6, [z16.d] +; CHECK-NEXT: st1b { z6.d }, p7, [z16.d] +; CHECK-NEXT: st1b { z7.d }, p0, [z16.d] +; CHECK-NEXT: str p8, [x0] ; CHECK-NEXT: b .LBB0_1 br label %1 @@ -66,6 +67,7 @@ define fastcc i8 @allocno_reload_assign() { %constexpr1 = shufflevector %constexpr, poison, zeroinitializer %constexpr2 = xor %constexpr1, shufflevector ( insertelement ( poison, i1 true, i64 0), poison, zeroinitializer) call void @llvm.masked.scatter.nxv16i8.nxv16p0( zeroinitializer, zeroinitializer, i32 0, %constexpr2) + store %constexpr, ptr %p, align 16 br label %1 } diff --git a/llvm/test/CodeGen/AArch64/extract-vector-cmp.ll b/llvm/test/CodeGen/AArch64/extract-vector-cmp.ll new file mode 100644 index 0000000000000..2f2bef468f99b --- /dev/null +++ b/llvm/test/CodeGen/AArch64/extract-vector-cmp.ll @@ -0,0 +1,186 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 +; RUN: llc -mattr=+sve < %s | FileCheck %s + +target triple = "aarch64-unknown-linux-gnu" + + +define i1 @extract_icmp_v4i32_const_splat_rhs(<4 x i32> %a) { +; CHECK-LABEL: extract_icmp_v4i32_const_splat_rhs: +; CHECK: // %bb.0: +; CHECK-NEXT: mov w8, v0.s[1] +; CHECK-NEXT: cmp w8, #5 +; CHECK-NEXT: cset w0, lo +; CHECK-NEXT: ret + %icmp = icmp ult <4 x i32> %a, splat (i32 5) + %ext = extractelement <4 x i1> %icmp, i32 1 + ret i1 %ext +} + +define i1 @extract_icmp_v4i32_const_splat_lhs(<4 x i32> %a) { +; CHECK-LABEL: extract_icmp_v4i32_const_splat_lhs: +; CHECK: // %bb.0: +; CHECK-NEXT: mov w8, v0.s[1] +; CHECK-NEXT: cmp w8, #7 +; CHECK-NEXT: cset w0, hi +; CHECK-NEXT: ret + %icmp = icmp ult <4 x i32> splat(i32 7), %a + %ext = extractelement <4 x i1> %icmp, i32 1 + ret i1 %ext +} + +define i1 @extract_icmp_v4i32_const_vec_rhs(<4 x i32> %a) { +; CHECK-LABEL: extract_icmp_v4i32_const_vec_rhs: +; CHECK: // %bb.0: +; CHECK-NEXT: mov w8, v0.s[1] +; CHECK-NEXT: cmp w8, #234 +; CHECK-NEXT: cset w0, lo +; CHECK-NEXT: ret + %icmp = icmp ult <4 x i32> %a, + %ext = extractelement <4 x i1> %icmp, i32 1 + ret i1 %ext +} + +define i1 @extract_fcmp_v4f32_const_splat_rhs(<4 x float> %a) { +; CHECK-LABEL: extract_fcmp_v4f32_const_splat_rhs: +; CHECK: // %bb.0: +; CHECK-NEXT: mov s0, v0.s[1] +; CHECK-NEXT: fmov s1, #4.00000000 +; CHECK-NEXT: fcmp s0, s1 +; CHECK-NEXT: cset w0, lt +; CHECK-NEXT: ret + %fcmp = fcmp ult <4 x float> %a, splat(float 4.0e+0) + %ext = extractelement <4 x i1> %fcmp, i32 1 + ret i1 %ext +} + +define void @vector_loop_with_icmp(ptr nocapture noundef writeonly %dest) { +; CHECK-LABEL: vector_loop_with_icmp: +; CHECK: // %bb.0: // %entry +; CHECK-NEXT: index z0.d, #0, #1 +; CHECK-NEXT: mov w8, #2 // =0x2 +; CHECK-NEXT: mov w9, #16 // =0x10 +; CHECK-NEXT: dup v1.2d, x8 +; CHECK-NEXT: add x8, x0, #4 +; CHECK-NEXT: mov w10, #1 // =0x1 +; CHECK-NEXT: b .LBB4_2 +; CHECK-NEXT: .LBB4_1: // %pred.store.continue6 +; CHECK-NEXT: // in Loop: Header=BB4_2 Depth=1 +; CHECK-NEXT: add v0.2d, v0.2d, v1.2d +; CHECK-NEXT: subs x9, x9, #2 +; CHECK-NEXT: add x8, x8, #8 +; CHECK-NEXT: b.eq .LBB4_6 +; CHECK-NEXT: .LBB4_2: // %vector.body +; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 +; CHECK-NEXT: fmov x11, d0 +; CHECK-NEXT: cmp x11, #14 +; CHECK-NEXT: b.hi .LBB4_4 +; CHECK-NEXT: // %bb.3: // %pred.store.if +; CHECK-NEXT: // in Loop: Header=BB4_2 Depth=1 +; CHECK-NEXT: stur w10, [x8, #-4] +; CHECK-NEXT: .LBB4_4: // %pred.store.continue +; CHECK-NEXT: // in Loop: Header=BB4_2 Depth=1 +; CHECK-NEXT: mov x11, v0.d[1] +; CHECK-NEXT: cmp x11, #14 +; CHECK-NEXT: b.hi .LBB4_1 +; CHECK-NEXT: // %bb.5: // %pred.store.if5 +; CHECK-NEXT: // in Loop: Header=BB4_2 Depth=1 +; CHECK-NEXT: str w10, [x8] +; CHECK-NEXT: b .LBB4_1 +; CHECK-NEXT: .LBB4_6: // %for.cond.cleanup +; CHECK-NEXT: ret +entry: + br label %vector.body + +vector.body: + %index = phi i64 [ 0, %entry ], [ %index.next, %pred.store.continue6 ] + %vec.ind = phi <2 x i64> [ , %entry ], [ %vec.ind.next, %pred.store.continue6 ] + %vec.cmp = icmp ult <2 x i64> %vec.ind, + %c0 = extractelement <2 x i1> %vec.cmp, i64 0 + br i1 %c0, label %pred.store.if, label %pred.store.continue + +pred.store.if: + %arrayidx = getelementptr inbounds i32, ptr %dest, i64 %index + store i32 1, ptr %arrayidx, align 4 + br label %pred.store.continue + +pred.store.continue: + %c1 = extractelement <2 x i1> %vec.cmp, i64 1 + br i1 %c1, label %pred.store.if5, label %pred.store.continue6 + +pred.store.if5: + %indexp1 = or disjoint i64 %index, 1 + %arrayidx2 = getelementptr inbounds i32, ptr %dest, i64 %indexp1 + store i32 1, ptr %arrayidx2, align 4 + br label %pred.store.continue6 + +pred.store.continue6: + %index.next = add i64 %index, 2 + %vec.ind.next = add <2 x i64> %vec.ind, + %index.cmp = icmp eq i64 %index.next, 16 + br i1 %index.cmp, label %for.cond.cleanup, label %vector.body + +for.cond.cleanup: + ret void +} + + +; Negative tests + +define i1 @extract_icmp_v4i32_splat_rhs(<4 x i32> %a, i32 %b) { +; CHECK-LABEL: extract_icmp_v4i32_splat_rhs: +; CHECK: // %bb.0: +; CHECK-NEXT: dup v1.4s, w0 +; CHECK-NEXT: cmhi v0.4s, v1.4s, v0.4s +; CHECK-NEXT: xtn v0.4h, v0.4s +; CHECK-NEXT: umov w8, v0.h[1] +; CHECK-NEXT: and w0, w8, #0x1 +; CHECK-NEXT: ret + %ins = insertelement <4 x i32> poison, i32 %b, i32 0 + %splat = shufflevector <4 x i32> %ins, <4 x i32> poison, <4 x i32> zeroinitializer + %icmp = icmp ult <4 x i32> %a, %splat + %ext = extractelement <4 x i1> %icmp, i32 1 + ret i1 %ext +} + +define i1 @extract_icmp_v4i32_splat_rhs_mul_use(<4 x i32> %a, ptr %p) { +; CHECK-LABEL: extract_icmp_v4i32_splat_rhs_mul_use: +; CHECK: // %bb.0: +; CHECK-NEXT: movi v1.4s, #235 +; CHECK-NEXT: adrp x9, .LCPI6_0 +; CHECK-NEXT: mov x8, x0 +; CHECK-NEXT: ldr q2, [x9, :lo12:.LCPI6_0] +; CHECK-NEXT: cmhi v0.4s, v1.4s, v0.4s +; CHECK-NEXT: xtn v1.4h, v0.4s +; CHECK-NEXT: and v0.16b, v0.16b, v2.16b +; CHECK-NEXT: addv s0, v0.4s +; CHECK-NEXT: umov w9, v1.h[1] +; CHECK-NEXT: fmov w10, s0 +; CHECK-NEXT: and w0, w9, #0x1 +; CHECK-NEXT: strb w10, [x8] +; CHECK-NEXT: ret + %icmp = icmp ult <4 x i32> %a, splat(i32 235) + %ext = extractelement <4 x i1> %icmp, i32 1 + store <4 x i1> %icmp, ptr %p, align 4 + ret i1 %ext +} + +define i1 @extract_icmp_v4i32_splat_rhs_unknown_idx(<4 x i32> %a, i32 %c) { +; CHECK-LABEL: extract_icmp_v4i32_splat_rhs_unknown_idx: +; CHECK: // %bb.0: +; CHECK-NEXT: sub sp, sp, #16 +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: movi v1.4s, #127 +; CHECK-NEXT: add x8, sp, #8 +; CHECK-NEXT: // kill: def $w0 killed $w0 def $x0 +; CHECK-NEXT: bfi x8, x0, #1, #2 +; CHECK-NEXT: cmhi v0.4s, v1.4s, v0.4s +; CHECK-NEXT: xtn v0.4h, v0.4s +; CHECK-NEXT: str d0, [sp, #8] +; CHECK-NEXT: ldrh w8, [x8] +; CHECK-NEXT: and w0, w8, #0x1 +; CHECK-NEXT: add sp, sp, #16 +; CHECK-NEXT: ret + %icmp = icmp ult <4 x i32> %a, splat(i32 127) + %ext = extractelement <4 x i1> %icmp, i32 %c + ret i1 %ext +} diff --git a/llvm/test/CodeGen/X86/vselect.ll b/llvm/test/CodeGen/X86/vselect.ll index 9acd995d612c3..be6ee8f689958 100644 --- a/llvm/test/CodeGen/X86/vselect.ll +++ b/llvm/test/CodeGen/X86/vselect.ll @@ -796,3 +796,29 @@ define i64 @vselect_any_extend_vector_inreg_crash(ptr %x) { ret i64 %4 } +; Tests the scalarizeBinOp code in DAGCombiner +define void @scalarize_binop(<1 x i1> %a) { +; SSE-LABEL: scalarize_binop: +; SSE: # %bb.0: # %bb0 +; SSE-NEXT: .p2align 4 +; SSE-NEXT: .LBB35_1: # %bb1 +; SSE-NEXT: # =>This Inner Loop Header: Depth=1 +; SSE-NEXT: jmp .LBB35_1 +; +; AVX-LABEL: scalarize_binop: +; AVX: # %bb.0: # %bb0 +; AVX-NEXT: .p2align 4 +; AVX-NEXT: .LBB35_1: # %bb1 +; AVX-NEXT: # =>This Inner Loop Header: Depth=1 +; AVX-NEXT: jmp .LBB35_1 +bb0: + br label %bb1 + +bb1: + %b = select <1 x i1> %a, <1 x i1> zeroinitializer, <1 x i1> splat (i1 true) + br label %bb2 + +bb2: + %c = extractelement <1 x i1> %b, i32 0 + br label %bb1 +} From adf892d743d91afc1af7893f97c770db31c26916 Mon Sep 17 00:00:00 2001 From: LLVM GN Syncbot Date: Wed, 4 Dec 2024 10:31:57 +0000 Subject: [PATCH 013/593] [gn build] Port 4b5e7fa4de54 --- llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn | 1 + llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn | 1 + 2 files changed, 2 insertions(+) diff --git a/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn b/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn index 6bfdeedfacd26..db2ee2e41d2bd 100644 --- a/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn @@ -62,6 +62,7 @@ static_library("AST") { "AttrDocTable.cpp", "AttrImpl.cpp", "Availability.cpp", + "ByteCode/BitcastBuffer.cpp", "ByteCode/ByteCodeEmitter.cpp", "ByteCode/Compiler.cpp", "ByteCode/Context.cpp", diff --git a/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn b/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn index fcdb9a5b1aeb2..04c646b059ece 100644 --- a/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn @@ -10,6 +10,7 @@ unittest("InterpTests") { "//clang/lib/Tooling", ] sources = [ + "BitcastBuffer.cpp", "Descriptor.cpp", "toAPValue.cpp", ] From 52b9d0beb6225d1ffe89e2921774f0df0b3e7969 Mon Sep 17 00:00:00 2001 From: Andrzej Warzynski Date: Wed, 4 Dec 2024 10:39:14 +0000 Subject: [PATCH 014/593] Revert "[MLIR][Arith] Add ExpandOps to convertArithToLLVM (#117305)" Failing bot: * https://lab.llvm.org/buildbot/#/builders/138/builds/729 Also, not all discussions have been resolved: * https://github.com/llvm/llvm-project/pull/117305#discussion_r1861194201 This reverts commit 2c739dfd53fde0995f91c8a2c11ec803041bac86. --- .../Conversion/ArithToLLVM/ArithToLLVM.cpp | 5 +- .../Conversion/ArithToLLVM/arith-to-llvm.mlir | 62 ------------------- 2 files changed, 1 insertion(+), 66 deletions(-) diff --git a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp index 211921638e42a..54d941ae9f6c8 100644 --- a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp +++ b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp @@ -13,7 +13,6 @@ #include "mlir/Conversion/LLVMCommon/ConversionTarget.h" #include "mlir/Conversion/LLVMCommon/VectorPattern.h" #include "mlir/Dialect/Arith/IR/Arith.h" -#include "mlir/Dialect/Arith/Transforms/Passes.h" #include "mlir/Dialect/LLVMIR/LLVMAttrs.h" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" #include "mlir/IR/TypeUtilities.h" @@ -505,8 +504,7 @@ struct ArithToLLVMConversionPass options.overrideIndexBitwidth(indexBitwidth); LLVMTypeConverter converter(&getContext(), options); - arith::populateCeilFloorDivExpandOpsPatterns(patterns); - arith::populateArithToLLVMConversionPatterns(converter, patterns); + mlir::arith::populateArithToLLVMConversionPatterns(converter, patterns); if (failed(applyPartialConversion(getOperation(), target, std::move(patterns)))) @@ -532,7 +530,6 @@ struct ArithToLLVMDialectInterface : public ConvertToLLVMPatternInterface { void populateConvertToLLVMConversionPatterns( ConversionTarget &target, LLVMTypeConverter &typeConverter, RewritePatternSet &patterns) const final { - arith::populateCeilFloorDivExpandOpsPatterns(patterns); arith::populateArithToLLVMConversionPatterns(typeConverter, patterns); } }; diff --git a/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir b/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir index a9dcc0a16b3db..64c40f1aba43b 100644 --- a/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir +++ b/mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir @@ -540,68 +540,6 @@ func.func @select(%arg0 : i1, %arg1 : i32, %arg2 : i32) -> i32 { // ----- -// CHECK-LABEL: @ceildivsi -// CHECK-SAME: %[[ARG0:.*]]: i64) -> i64 -func.func @ceildivsi(%arg0 : i64) -> i64 { - // CHECK: %[[CST0:.*]] = llvm.mlir.constant(1 : i64) : i64 - // CHECK: %[[CST1:.*]] = llvm.mlir.constant(0 : i64) : i64 - // CHECK: %[[CST2:.*]] = llvm.mlir.constant(-1 : i64) : i64 - // CHECK: %[[CMP0:.*]] = llvm.icmp "sgt" %[[ARG0]], %[[CST1]] : i64 - // CHECK: %[[SEL0:.*]] = llvm.select %[[CMP0]], %[[CST2]], %[[CST0]] : i1, i64 - // CHECK: %[[ADD0:.*]] = llvm.add %[[SEL0]], %[[ARG0]] : i64 - // CHECK: %[[DIV0:.*]] = llvm.sdiv %[[ADD0]], %[[ARG0]] : i64 - // CHECK: %[[ADD1:.*]] = llvm.add %[[DIV0]], %[[CST0]] : i64 - // CHECK: %[[SUB0:.*]] = llvm.sub %[[CST1]], %[[ARG0]] : i64 - // CHECK: %[[DIV1:.*]] = llvm.sdiv %[[SUB0]], %[[ARG0]] : i64 - // CHECK: %[[SUB1:.*]] = llvm.sub %[[CST1]], %[[DIV1]] : i64 - // CHECK: %[[CMP1:.*]] = llvm.icmp "slt" %[[ARG0]], %[[CST1]] : i64 - // CHECK: %[[CMP2:.*]] = llvm.icmp "sgt" %[[ARG0]], %[[CST1]] : i64 - // CHECK: %[[CMP3:.*]] = llvm.icmp "slt" %[[ARG0]], %[[CST1]] : i64 - // CHECK: %[[CMP4:.*]] = llvm.icmp "sgt" %[[ARG0]], %[[CST1]] : i64 - // CHECK: %[[AND0:.*]] = llvm.and %[[CMP1]], %[[CMP3]] : i1 - // CHECK: %[[AND1:.*]] = llvm.and %[[CMP2]], %[[CMP4]] : i1 - // CHECK: %[[OR:.*]] = llvm.or %[[AND0]], %[[AND1]] : i1 - // CHECK: %[[SEL1:.*]] = llvm.select %[[OR]], %[[ADD1]], %[[SUB1]] : i1, i64 - %0 = arith.ceildivsi %arg0, %arg0 : i64 - return %0: i64 -} - -// CHECK-LABEL: @ceildivui -// CHECK-SAME: %[[ARG0:.*]]: i32) -> i32 -func.func @ceildivui(%arg0 : i32) -> i32 { -// CHECK: %[[CST0:.*]] = llvm.mlir.constant(0 : i32) : i32 -// CHECK: %[[CMP0:.*]] = llvm.icmp "eq" %[[ARG0]], %[[CST0]] : i32 -// CHECK: %[[CST1:.*]] = llvm.mlir.constant(1 : i32) : i32 -// CHECK: %[[SUB0:.*]] = llvm.sub %[[ARG0]], %[[CST1]] : i32 -// CHECK: %[[DIV0:.*]] = llvm.udiv %[[SUB0]], %[[ARG0]] : i32 -// CHECK: %[[ADD0:.*]] = llvm.add %[[DIV0]], %[[CST1]] : i32 -// CHECK: %[[SEL0:.*]] = llvm.select %[[CMP0]], %[[CST0]], %[[ADD0]] : i1, i32 - %0 = arith.ceildivui %arg0, %arg0 : i32 - return %0: i32 -} - -// ----- - -// CHECK-LABEL: @floordivsi -// CHECK-SAME: %[[ARG0:.*]]: i32, %[[ARG1:.*]]: i32) -> i32 -func.func @floordivsi(%arg0 : i32, %arg1 : i32) -> i32 { - // CHECK: %[[SDIV:.*]] = llvm.sdiv %[[ARG0]], %[[ARG1]] : i32 - // CHECK: %[[MUL0:.*]] = llvm.mul %[[SDIV]], %[[ARG1]] : i32 - // CHECK: %[[CMP0:.*]] = llvm.icmp "ne" %[[ARG0]], %[[MUL0]] : i32 - // CHECK: %[[CST0:.*]] = llvm.mlir.constant(0 : i32) : i32 - // CHECK: %[[CMP1:.*]] = llvm.icmp "slt" %[[ARG0]], %[[CST0]] : i32 - // CHECK: %[[CMP2:.*]] = llvm.icmp "slt" %[[ARG1]], %[[CST0]] : i32 - // CHECK: %[[CMP3:.*]] = llvm.icmp "ne" %[[CMP1]], %[[CMP2]] : i1 - // CHECK: %[[AND:.*]] = llvm.and %[[CMP0]], %[[CMP3]] : i1 - // CHECK: %[[CST1:.*]] = llvm.mlir.constant(-1 : i32) : i32 - // CHECK: %[[ADD:.*]] = llvm.add %[[SDIV]], %[[CST1]] : i32 - // CHECK: %[[SEL:.*]] = llvm.select %[[AND]], %[[ADD]], %[[SDIV]] : i1, i32 - %0 = arith.floordivsi %arg0, %arg1 : i32 - return %0 : i32 -} - -// ----- - // CHECK-LABEL: @minmaxi func.func @minmaxi(%arg0 : i32, %arg1 : i32) -> i32 { // CHECK: = llvm.intr.smin(%arg0, %arg1) : (i32, i32) -> i32 From 54db16221c92eb52efbea90ad5b5d2a1d00cda3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Wed, 4 Dec 2024 11:43:43 +0100 Subject: [PATCH 015/593] Revert "[clang][bytecode] Handle bitcasts involving bitfields (#116843)" This reverts commit 4b5e7fa4de54e00df007ae5e2675393fd046aa59. This breaks builders: https://lab.llvm.org/buildbot/#/builders/154/builds/8464 I guess some more testing on 32 bit hosts is needed. --- clang/lib/AST/ByteCode/BitcastBuffer.cpp | 95 ---- clang/lib/AST/ByteCode/BitcastBuffer.h | 88 ---- clang/lib/AST/ByteCode/Boolean.h | 4 +- clang/lib/AST/ByteCode/Integral.h | 1 - .../lib/AST/ByteCode/InterpBuiltinBitCast.cpp | 284 +++++++----- clang/lib/AST/CMakeLists.txt | 1 - .../ByteCode/builtin-bit-cast-bitfields.cpp | 437 ------------------ clang/test/AST/ByteCode/builtin-bit-cast.cpp | 119 +++-- .../unittests/AST/ByteCode/BitcastBuffer.cpp | 87 ---- clang/unittests/AST/ByteCode/CMakeLists.txt | 1 - 10 files changed, 260 insertions(+), 857 deletions(-) delete mode 100644 clang/lib/AST/ByteCode/BitcastBuffer.cpp delete mode 100644 clang/lib/AST/ByteCode/BitcastBuffer.h delete mode 100644 clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp delete mode 100644 clang/unittests/AST/ByteCode/BitcastBuffer.cpp diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.cpp b/clang/lib/AST/ByteCode/BitcastBuffer.cpp deleted file mode 100644 index 0cc97b0b6bf19..0000000000000 --- a/clang/lib/AST/ByteCode/BitcastBuffer.cpp +++ /dev/null @@ -1,95 +0,0 @@ -//===-------------------- Bitcastbuffer.cpp ---------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include "BitcastBuffer.h" - -using namespace clang; -using namespace clang::interp; - -/// Returns the value of the bit in the given sequence of bytes. -static inline bool bitof(const std::byte *B, Bits BitIndex) { - return (B[BitIndex.roundToBytes()] & - (std::byte{1} << BitIndex.getOffsetInByte())) != std::byte{0}; -} - -void BitcastBuffer::pushData(const std::byte *In, Bits BitOffset, Bits BitWidth, - Endian TargetEndianness) { - for (unsigned It = 0; It != BitWidth.getQuantity(); ++It) { - bool BitValue = bitof(In, Bits(It)); - if (!BitValue) - continue; - - Bits DstBit; - if (TargetEndianness == Endian::Little) - DstBit = BitOffset + Bits(It); - else - DstBit = size() - BitOffset - BitWidth + Bits(It); - - size_t DstByte = DstBit.roundToBytes(); - Data[DstByte] |= std::byte{1} << DstBit.getOffsetInByte(); - } -} - -std::unique_ptr -BitcastBuffer::copyBits(Bits BitOffset, Bits BitWidth, Bits FullBitWidth, - Endian TargetEndianness) const { - assert(BitWidth.getQuantity() <= FullBitWidth.getQuantity()); - assert(FullBitWidth.isFullByte()); - auto Out = std::make_unique(FullBitWidth.roundToBytes()); - - for (unsigned It = 0; It != BitWidth.getQuantity(); ++It) { - Bits BitIndex; - if (TargetEndianness == Endian::Little) - BitIndex = BitOffset + Bits(It); - else - BitIndex = size() - BitWidth - BitOffset + Bits(It); - - bool BitValue = bitof(Data.get(), BitIndex); - if (!BitValue) - continue; - - Bits DstBit = Bits(It); - size_t DstByte = DstBit.roundToBytes(); - Out[DstByte] |= std::byte{1} << DstBit.getOffsetInByte(); - } - - return Out; -} - -#if 0 - template - static std::string hex(T t) { - std::stringstream stream; - stream << std::hex << (int)t; - return std::string(stream.str()); - } - - - void BitcastBuffer::dump(bool AsHex = true) const { - llvm::errs() << "LSB\n "; - unsigned LineLength = 0; - for (unsigned I = 0; I != (FinalBitSize / 8); ++I) { - std::byte B = Data[I]; - if (AsHex) { - std::stringstream stream; - stream << std::hex << (int)B; - llvm::errs() << stream.str(); - LineLength += stream.str().size() + 1; - } else { - llvm::errs() << std::bitset<8>((int)B).to_string(); - LineLength += 8 + 1; - // llvm::errs() << (int)B; - } - llvm::errs() << ' '; - } - llvm::errs() << '\n'; - - for (unsigned I = 0; I != LineLength; ++I) - llvm::errs() << ' '; - llvm::errs() << "MSB\n"; - } -#endif diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.h b/clang/lib/AST/ByteCode/BitcastBuffer.h deleted file mode 100644 index 8442df5c60cf5..0000000000000 --- a/clang/lib/AST/ByteCode/BitcastBuffer.h +++ /dev/null @@ -1,88 +0,0 @@ -//===--------------------- BitcastBuffer.h ----------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_AST_INTERP_BITCAST_BUFFER_H -#define LLVM_CLANG_AST_INTERP_BITCAST_BUFFER_H - -#include -#include -#include - -namespace clang { -namespace interp { - -enum class Endian { Little, Big }; - -/// A quantity in bits. -struct Bits { - size_t N = 0; - Bits() = default; - static Bits zero() { return Bits(0); } - explicit Bits(size_t Quantity) : N(Quantity) {} - size_t getQuantity() const { return N; } - size_t roundToBytes() const { return N / 8; } - size_t getOffsetInByte() const { return N % 8; } - bool isFullByte() const { return N % 8 == 0; } - bool nonZero() const { return N != 0; } - - Bits operator-(Bits Other) { return Bits(N - Other.N); } - Bits operator+(Bits Other) { return Bits(N + Other.N); } - Bits operator+=(size_t O) { - N += O; - return *this; - } - - bool operator>=(Bits Other) { return N >= Other.N; } -}; - -/// A quantity in bytes. -struct Bytes { - size_t N; - explicit Bytes(size_t Quantity) : N(Quantity) {} - size_t getQuantity() const { return N; } - Bits toBits() const { return Bits(N * 8); } -}; - -/// Track what bits have been initialized to known values and which ones -/// have indeterminate value. -struct BitcastBuffer { - Bits FinalBitSize; - std::unique_ptr Data; - - BitcastBuffer(Bits FinalBitSize) : FinalBitSize(FinalBitSize) { - assert(FinalBitSize.isFullByte()); - unsigned ByteSize = FinalBitSize.roundToBytes(); - Data = std::make_unique(ByteSize); - } - - /// Returns the buffer size in bits. - Bits size() const { return FinalBitSize; } - - /// Returns \c true if all bits in the buffer have been initialized. - bool allInitialized() const { - // FIXME: Implement. - return true; - } - - /// Push \p BitWidth bits at \p BitOffset from \p In into the buffer. - /// \p TargetEndianness is the endianness of the target we're compiling for. - /// \p In must hold at least \p BitWidth many bits. - void pushData(const std::byte *In, Bits BitOffset, Bits BitWidth, - Endian TargetEndianness); - - /// Copy \p BitWidth bits at offset \p BitOffset from the buffer. - /// \p TargetEndianness is the endianness of the target we're compiling for. - /// - /// The returned output holds exactly (\p FullBitWidth / 8) bytes. - std::unique_ptr copyBits(Bits BitOffset, Bits BitWidth, - Bits FullBitWidth, - Endian TargetEndianness) const; -}; - -} // namespace interp -} // namespace clang -#endif diff --git a/clang/lib/AST/ByteCode/Boolean.h b/clang/lib/AST/ByteCode/Boolean.h index 8380e85865ac5..78d75e75c7531 100644 --- a/clang/lib/AST/ByteCode/Boolean.h +++ b/clang/lib/AST/ByteCode/Boolean.h @@ -82,7 +82,9 @@ class Boolean final { Boolean truncate(unsigned TruncBits) const { return *this; } static Boolean bitcastFromMemory(const std::byte *Buff, unsigned BitWidth) { - // Just load the first byte. + // Boolean width is currently always 8 for all supported targets. If this + // changes we need to get the bool width from the target info. + assert(BitWidth == 8); bool Val = static_cast(*Buff); return Boolean(Val); } diff --git a/clang/lib/AST/ByteCode/Integral.h b/clang/lib/AST/ByteCode/Integral.h index 26585799e5ead..cb81b5a698924 100644 --- a/clang/lib/AST/ByteCode/Integral.h +++ b/clang/lib/AST/ByteCode/Integral.h @@ -183,7 +183,6 @@ template class Integral final { } Integral truncate(unsigned TruncBits) const { - assert(TruncBits >= 1); if (TruncBits >= Bits) return *this; const ReprT BitMask = (ReprT(1) << ReprT(TruncBits)) - 1; diff --git a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp index 2fae7f873ab11..b1230f92ddf1d 100644 --- a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp +++ b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp @@ -6,7 +6,6 @@ // //===----------------------------------------------------------------------===// #include "InterpBuiltinBitCast.h" -#include "BitcastBuffer.h" #include "Boolean.h" #include "Context.h" #include "Floating.h" @@ -22,19 +21,9 @@ using namespace clang; using namespace clang::interp; -/// Implement __builtin_bit_cast and related operations. -/// Since our internal representation for data is more complex than -/// something we can simply memcpy or memcmp, we first bitcast all the data -/// into a buffer, which we then later use to copy the data into the target. - -// TODO: -// - Try to minimize heap allocations. -// - Optimize the common case of only pushing and pulling full -// bytes to/from the buffer. - /// Used to iterate over pointer fields. using DataFunc = llvm::function_ref; + size_t BitOffset, bool PackedBools)>; #define BITCAST_TYPE_SWITCH(Expr, B) \ do { \ @@ -72,72 +61,156 @@ using DataFunc = llvm::function_ref Data; + + BitcastBuffer() = default; + + size_t size() const { return SizeInBits; } + + const std::byte *data() const { return Data.data(); } + + std::byte *getBytes(unsigned BitOffset) const { + assert(BitOffset % 8 == 0); + assert(BitOffset < SizeInBits); + return const_cast(data() + (BitOffset / 8)); + } + + bool allInitialized() const { + // FIXME: Implement. + return true; + } + + bool atByteBoundary() const { return (Data.size() * 8) == SizeInBits; } + + void pushBit(bool Value) { + if (atByteBoundary()) + Data.push_back(std::byte{0}); + + if (Value) + Data.back() |= (std::byte{1} << (SizeInBits % 8)); + ++SizeInBits; + } + + void pushData(const std::byte *data, size_t BitWidth, bool BigEndianTarget) { + bool OnlyFullBytes = BitWidth % 8 == 0; + unsigned NBytes = BitWidth / 8; + + size_t BitsHandled = 0; + // Read all full bytes first + for (size_t I = 0; I != NBytes; ++I) { + std::byte B = + BigEndianTarget ? data[NBytes - OnlyFullBytes - I] : data[I]; + for (unsigned X = 0; X != 8; ++X) { + pushBit(bitof(B, X)); + ++BitsHandled; + } + } + + if (BitsHandled == BitWidth) + return; + + // Rest of the bits. + assert((BitWidth - BitsHandled) < 8); + std::byte B = BigEndianTarget ? data[0] : data[NBytes]; + for (size_t I = 0, E = (BitWidth - BitsHandled); I != E; ++I) { + pushBit(bitof(B, I)); + ++BitsHandled; + } + + assert(BitsHandled == BitWidth); + } +}; + +/// We use this to recursively iterate over all fields and elemends of a pointer /// and extract relevant data for a bitcast. -static bool enumerateData(const Pointer &P, const Context &Ctx, Bits Offset, - Bits BitsToRead, DataFunc F) { +static bool enumerateData(const Pointer &P, const Context &Ctx, size_t Offset, + DataFunc F) { const Descriptor *FieldDesc = P.getFieldDesc(); assert(FieldDesc); // Primitives. if (FieldDesc->isPrimitive()) - return F(P, FieldDesc->getPrimType(), Offset, /*PackedBools=*/false); + return F(P, FieldDesc->getPrimType(), Offset, false); // Primitive arrays. if (FieldDesc->isPrimitiveArray()) { + bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); QualType ElemType = FieldDesc->getElemQualType(); size_t ElemSizeInBits = Ctx.getASTContext().getTypeSize(ElemType); PrimType ElemT = *Ctx.classify(ElemType); // Special case, since the bools here are packed. bool PackedBools = FieldDesc->getType()->isExtVectorBoolType(); - unsigned NumElems = FieldDesc->getNumElems(); bool Ok = true; - for (unsigned I = P.getIndex(); I != NumElems; ++I) { - Ok = Ok && F(P.atIndex(I), ElemT, Offset, PackedBools); - Offset += PackedBools ? 1 : ElemSizeInBits; - if (Offset >= BitsToRead) - break; + for (unsigned I = 0; I != FieldDesc->getNumElems(); ++I) { + unsigned Index = BigEndianTarget ? (FieldDesc->getNumElems() - 1 - I) : I; + Ok = Ok && F(P.atIndex(Index), ElemT, Offset, PackedBools); + Offset += ElemSizeInBits; } return Ok; } // Composite arrays. if (FieldDesc->isCompositeArray()) { + bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); QualType ElemType = FieldDesc->getElemQualType(); size_t ElemSizeInBits = Ctx.getASTContext().getTypeSize(ElemType); for (unsigned I = 0; I != FieldDesc->getNumElems(); ++I) { - enumerateData(P.atIndex(I).narrow(), Ctx, Offset, BitsToRead, F); + unsigned Index = BigEndianTarget ? (FieldDesc->getNumElems() - 1 - I) : I; + enumerateData(P.atIndex(Index).narrow(), Ctx, Offset, F); Offset += ElemSizeInBits; - if (Offset >= BitsToRead) - break; } return true; } // Records. if (FieldDesc->isRecord()) { + bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); const Record *R = FieldDesc->ElemRecord; const ASTRecordLayout &Layout = Ctx.getASTContext().getASTRecordLayout(R->getDecl()); bool Ok = true; - for (const Record::Field &Fi : R->fields()) { - Pointer Elem = P.atField(Fi.Offset); - Bits BitOffset = - Offset + Bits(Layout.getFieldOffset(Fi.Decl->getFieldIndex())); - Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); - } - for (const Record::Base &B : R->bases()) { - Pointer Elem = P.atField(B.Offset); - CharUnits ByteOffset = - Layout.getBaseClassOffset(cast(B.Decl)); - Bits BitOffset = Offset + Bits(Ctx.getASTContext().toBits(ByteOffset)); - Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); + auto enumerateFields = [&]() -> void { + for (unsigned I = 0, N = R->getNumFields(); I != N; ++I) { + const Record::Field *Fi = + R->getField(BigEndianTarget ? (N - 1 - I) : I); + Pointer Elem = P.atField(Fi->Offset); + size_t BitOffset = + Offset + Layout.getFieldOffset(Fi->Decl->getFieldIndex()); + Ok = Ok && enumerateData(Elem, Ctx, BitOffset, F); + } + }; + auto enumerateBases = [&]() -> void { + for (unsigned I = 0, N = R->getNumBases(); I != N; ++I) { + const Record::Base *B = R->getBase(BigEndianTarget ? (N - 1 - I) : I); + Pointer Elem = P.atField(B->Offset); + CharUnits ByteOffset = + Layout.getBaseClassOffset(cast(B->Decl)); + size_t BitOffset = Offset + Ctx.getASTContext().toBits(ByteOffset); + Ok = Ok && enumerateData(Elem, Ctx, BitOffset, F); + } + }; + + if (BigEndianTarget) { + enumerateFields(); + enumerateBases(); + } else { + enumerateBases(); + enumerateFields(); } return Ok; @@ -147,8 +220,8 @@ static bool enumerateData(const Pointer &P, const Context &Ctx, Bits Offset, } static bool enumeratePointerFields(const Pointer &P, const Context &Ctx, - Bits BitsToRead, DataFunc F) { - return enumerateData(P, Ctx, Bits::zero(), BitsToRead, F); + DataFunc F) { + return enumerateData(P, Ctx, 0, F); } // This function is constexpr if and only if To, From, and the types of @@ -222,57 +295,62 @@ static bool CheckBitcastType(InterpState &S, CodePtr OpPC, QualType T, static bool readPointerToBuffer(const Context &Ctx, const Pointer &FromPtr, BitcastBuffer &Buffer, bool ReturnOnUninit) { const ASTContext &ASTCtx = Ctx.getASTContext(); - Endian TargetEndianness = - ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; + bool SwapData = (ASTCtx.getTargetInfo().isLittleEndian() != + llvm::sys::IsLittleEndianHost); + bool BigEndianTarget = ASTCtx.getTargetInfo().isBigEndian(); return enumeratePointerFields( - FromPtr, Ctx, Buffer.size(), - [&](const Pointer &P, PrimType T, Bits BitOffset, + FromPtr, Ctx, + [&](const Pointer &P, PrimType T, size_t BitOffset, bool PackedBools) -> bool { - // if (!P.isInitialized()) { - // assert(false && "Implement uninitialized value tracking"); - // return ReturnOnUninit; - // } + if (!P.isInitialized()) { + assert(false && "Implement uninitialized value tracking"); + return ReturnOnUninit; + } - // assert(P.isInitialized()); + assert(P.isInitialized()); // nullptr_t is a PT_Ptr for us, but it's still not std::is_pointer_v. if (T == PT_Ptr) assert(false && "Implement casting to pointer types"); CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); - Bits BitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); - Bits FullBitWidth = BitWidth; - auto Buff = - std::make_unique(ObjectReprChars.getQuantity()); + unsigned BitWidth = ASTCtx.toBits(ObjectReprChars); + llvm::SmallVector Buff(ObjectReprChars.getQuantity()); // Work around floating point types that contain unused padding bytes. // This is really just `long double` on x86, which is the only // fundamental type with padding bytes. if (T == PT_Float) { const Floating &F = P.deref(); - Bits NumBits = Bits( - llvm::APFloatBase::getSizeInBits(F.getAPFloat().getSemantics())); - assert(NumBits.isFullByte()); - assert(NumBits.getQuantity() <= FullBitWidth.getQuantity()); - F.bitcastToMemory(Buff.get()); + unsigned NumBits = + llvm::APFloatBase::getSizeInBits(F.getAPFloat().getSemantics()); + assert(NumBits % 8 == 0); + assert(NumBits <= (ObjectReprChars.getQuantity() * 8)); + F.bitcastToMemory(Buff.data()); // Now, only (maybe) swap the actual size of the float, excluding the // padding bits. - if (llvm::sys::IsBigEndianHost) - swapBytes(Buff.get(), NumBits.roundToBytes()); + if (SwapData) + swapBytes(Buff.data(), NumBits / 8); } else { if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) - BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), - (unsigned)FullBitWidth.getQuantity())); + BitWidth = FD->getBitWidthValue(ASTCtx); else if (T == PT_Bool && PackedBools) - BitWidth = Bits(1); - - BITCAST_TYPE_SWITCH(T, { P.deref().bitcastToMemory(Buff.get()); }); - - if (llvm::sys::IsBigEndianHost) - swapBytes(Buff.get(), FullBitWidth.roundToBytes()); + BitWidth = 1; + + BITCAST_TYPE_SWITCH(T, { + T Val = P.deref(); + Val.bitcastToMemory(Buff.data()); + }); + if (SwapData) + swapBytes(Buff.data(), ObjectReprChars.getQuantity()); } - Buffer.pushData(Buff.get(), BitOffset, BitWidth, TargetEndianness); + if (BitWidth != (Buff.size() * 8) && BigEndianTarget) { + Buffer.pushData(Buff.data() + (Buff.size() - 1 - (BitWidth / 8)), + BitWidth, BigEndianTarget); + } else { + Buffer.pushData(Buff.data(), BitWidth, BigEndianTarget); + } return true; }); } @@ -284,21 +362,16 @@ bool clang::interp::DoBitCast(InterpState &S, CodePtr OpPC, const Pointer &Ptr, assert(Ptr.isBlockPointer()); assert(Buff); - Bits BitSize = Bytes(BuffSize).toBits(); - BitcastBuffer Buffer(BitSize); + BitcastBuffer Buffer; if (!CheckBitcastType(S, OpPC, Ptr.getType(), /*IsToType=*/false)) return false; bool Success = readPointerToBuffer(S.getContext(), Ptr, Buffer, /*ReturnOnUninit=*/false); - HasIndeterminateBits = !Buffer.allInitialized(); + assert(Buffer.size() == BuffSize * 8); - const ASTContext &ASTCtx = S.getASTContext(); - Endian TargetEndianness = - ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; - auto B = Buffer.copyBits(Bits::zero(), BitSize, BitSize, TargetEndianness); - - std::memcpy(Buff, B.get(), BuffSize); + HasIndeterminateBits = !Buffer.allInitialized(); + std::memcpy(Buff, Buffer.data(), BuffSize); if (llvm::sys::IsBigEndianHost) swapBytes(Buff, BuffSize); @@ -320,60 +393,43 @@ bool clang::interp::DoBitCastPtr(InterpState &S, CodePtr OpPC, if (!CheckBitcastType(S, OpPC, FromType, /*IsToType=*/false)) return false; - const ASTContext &ASTCtx = S.getASTContext(); - - CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(ToType); - BitcastBuffer Buffer(Bits(ASTCtx.toBits(ObjectReprChars))); + BitcastBuffer Buffer; readPointerToBuffer(S.getContext(), FromPtr, Buffer, /*ReturnOnUninit=*/false); // Now read the values out of the buffer again and into ToPtr. - Endian TargetEndianness = - ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; + const ASTContext &ASTCtx = S.getASTContext(); + size_t BitOffset = 0; bool Success = enumeratePointerFields( - ToPtr, S.getContext(), Buffer.size(), - [&](const Pointer &P, PrimType T, Bits BitOffset, - bool PackedBools) -> bool { - CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); - Bits FullBitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); + ToPtr, S.getContext(), + [&](const Pointer &P, PrimType T, size_t _, bool PackedBools) -> bool { if (T == PT_Float) { + CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); const auto &Semantics = ASTCtx.getFloatTypeSemantics(P.getType()); - Bits NumBits = Bits(llvm::APFloatBase::getSizeInBits(Semantics)); - assert(NumBits.isFullByte()); - assert(NumBits.getQuantity() <= FullBitWidth.getQuantity()); - auto M = Buffer.copyBits(BitOffset, NumBits, FullBitWidth, - TargetEndianness); + unsigned NumBits = llvm::APFloatBase::getSizeInBits(Semantics); + assert(NumBits % 8 == 0); + assert(NumBits <= ASTCtx.toBits(ObjectReprChars)); + std::byte *M = Buffer.getBytes(BitOffset); if (llvm::sys::IsBigEndianHost) - swapBytes(M.get(), NumBits.roundToBytes()); + swapBytes(M, NumBits / 8); - P.deref() = Floating::bitcastFromMemory(M.get(), Semantics); + P.deref() = Floating::bitcastFromMemory(M, Semantics); P.initialize(); + BitOffset += ASTCtx.toBits(ObjectReprChars); return true; } - Bits BitWidth; - if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) - BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), - (unsigned)FullBitWidth.getQuantity())); - else if (T == PT_Bool && PackedBools) - BitWidth = Bits(1); - else - BitWidth = FullBitWidth; + BITCAST_TYPE_SWITCH_FIXED_SIZE(T, { + std::byte *M = Buffer.getBytes(BitOffset); - auto Memory = Buffer.copyBits(BitOffset, BitWidth, FullBitWidth, - TargetEndianness); - if (llvm::sys::IsBigEndianHost) - swapBytes(Memory.get(), FullBitWidth.roundToBytes()); + if (llvm::sys::IsBigEndianHost) + swapBytes(M, T::bitWidth() / 8); - BITCAST_TYPE_SWITCH_FIXED_SIZE(T, { - if (BitWidth.nonZero()) - P.deref() = T::bitcastFromMemory(Memory.get(), T::bitWidth()) - .truncate(BitWidth.getQuantity()); - else - P.deref() = T::zero(); + P.deref() = T::bitcastFromMemory(M, T::bitWidth()); + P.initialize(); + BitOffset += T::bitWidth(); }); - P.initialize(); return true; }); diff --git a/clang/lib/AST/CMakeLists.txt b/clang/lib/AST/CMakeLists.txt index cb13c5225b713..52c6a45de9a26 100644 --- a/clang/lib/AST/CMakeLists.txt +++ b/clang/lib/AST/CMakeLists.txt @@ -65,7 +65,6 @@ add_clang_library(clangAST ExternalASTSource.cpp FormatString.cpp InheritViz.cpp - ByteCode/BitcastBuffer.cpp ByteCode/ByteCodeEmitter.cpp ByteCode/Compiler.cpp ByteCode/Context.cpp diff --git a/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp b/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp deleted file mode 100644 index 1bb44f4f13443..0000000000000 --- a/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp +++ /dev/null @@ -1,437 +0,0 @@ -// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter %s -// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -triple aarch64_be-linux-gnu -fexperimental-new-constant-interpreter %s -// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter -triple powerpc64le-unknown-unknown -mabi=ieeelongdouble %s -// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter -triple powerpc64-unknown-unknown -mabi=ieeelongdouble %s - -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -# define LITTLE_END 1 -#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -# define LITTLE_END 0 -#else -# error "huh?" -#endif - -typedef decltype(nullptr) nullptr_t; -typedef __INTPTR_TYPE__ intptr_t; -typedef unsigned __INT16_TYPE__ uint16_t; -typedef unsigned __INT32_TYPE__ uint32_t; -typedef unsigned __INT64_TYPE__ uint64_t; - -static_assert(sizeof(int) == 4); -static_assert(sizeof(long long) == 8); - -template -constexpr To bit_cast(const From &from) { - static_assert(sizeof(To) == sizeof(From)); - return __builtin_bit_cast(To, from); -} - -template -constexpr bool check_round_trip(const Init &init) { - return bit_cast(bit_cast(init)) == init; -} - -template -constexpr Init round_trip(const Init &init) { - return bit_cast(bit_cast(init)); -} - -namespace std { -enum byte : unsigned char {}; -} // namespace std - -template -struct bits { - T : Pad; - T bits : N; - - constexpr bool operator==(const T& rhs) const { - return bits == rhs; - } -}; - -template -constexpr bool operator==(const struct bits& lhs, const struct bits& rhs) { - return lhs.bits == rhs.bits; -} - -template -struct bytes { - using size_t = unsigned int; - unsigned char d[N]; - - constexpr unsigned char operator[](size_t index) { - if (index < N) - return d[index]; - return -1; - } -}; - -namespace Sanity { - /// This is just one byte, and we extract 2 bits from it. - /// - /// 3 is 0000'0011. - /// For both LE and BE, the buffer will contain exactly that - /// byte, unaltered and not reordered in any way. It contains all 8 bits. - static_assert(__builtin_bit_cast(bits<2>, (unsigned char)3) == (LITTLE_END ? 3 : 0)); - - /// Similarly, we have one full byte of data, with the two most-significant - /// bits set: - /// 192 is 1100'0000 - static_assert(__builtin_bit_cast(bits<2>, (unsigned char)192) == (LITTLE_END ? 0 : 3)); - - - /// Here we are instead bitcasting two 1-bits into a destination of 8 bits. - /// On LE, we should pick the two least-significant bits. On BE, the opposite. - /// NOTE: Can't verify this with gcc. - constexpr auto B1 = bits<2>{3}; - static_assert(__builtin_bit_cast(unsigned char, B1) == (LITTLE_END ? 3 : 192)); - - /// This should be 0000'0110. - /// On LE, this should result in 6. - /// On BE, 1100'0000 = 192. - constexpr auto B2 = bits<3>{6}; - static_assert(__builtin_bit_cast(unsigned char, B2) == (LITTLE_END ? 6 : 192)); - - constexpr auto B3 = bits<4>{6}; - static_assert(__builtin_bit_cast(unsigned char, B3) == (LITTLE_END ? 6 : 96)); - - struct B { - std::byte b0 : 4; - std::byte b1 : 4; - }; - - /// We can properly decompose one byte (8 bit) int two 4-bit bitfields. - constexpr struct { unsigned char b0; } T = {0xee}; - constexpr B MB = __builtin_bit_cast(B, T); - static_assert(MB.b0 == 0xe); - static_assert(MB.b1 == 0xe); -} - -namespace BitFields { - struct BitFields { - unsigned a : 2; - unsigned b : 30; - }; - - constexpr unsigned A = __builtin_bit_cast(unsigned, BitFields{3, 16}); - static_assert(A == (LITTLE_END ? 67 : 3221225488)); - - struct S { - unsigned a : 2; - unsigned b : 28; - unsigned c : 2; - }; - - constexpr S s = __builtin_bit_cast(S, 0xFFFFFFFF); - static_assert(s.a == 3); - static_assert(s.b == 268435455); - static_assert(s.c == 3); - - void bitfield_indeterminate() { - struct BF { unsigned char z : 2; }; - enum byte : unsigned char {}; - - constexpr BF bf = {0x3}; - /// Requires bitcasts to composite types. - static_assert(bit_cast>(bf).bits == bf.z); - static_assert(bit_cast(bf)); - - static_assert(__builtin_bit_cast(byte, bf)); - - struct M { - // ref-note@+1 {{subobject declared here}} - unsigned char mem[sizeof(BF)]; - }; - // ref-error@+2 {{initialized by a constant expression}} - // ref-note@+1 {{not initialized}} - constexpr M m = bit_cast(bf); - - constexpr auto f = []() constexpr { - // bits<24, unsigned int, LITTLE_END ? 0 : 8> B = {0xc0ffee}; - constexpr struct { unsigned short b1; unsigned char b0; } B = {0xc0ff, 0xee}; - return bit_cast>(B); - }; - - static_assert(f()[0] + f()[1] + f()[2] == 0xc0 + 0xff + 0xee); - { - // ref-error@+2 {{initialized by a constant expression}} - // ref-note@+1 {{read of uninitialized object is not allowed in a constant expression}} - constexpr auto _bad = f()[3]; - } - - struct B { - unsigned short s0 : 8; - unsigned short s1 : 8; - std::byte b0 : 4; - std::byte b1 : 4; - std::byte b2 : 4; - }; - constexpr auto g = [f]() constexpr { - return bit_cast(f()); - }; - static_assert(g().s0 + g().s1 + g().b0 + g().b1 == 0xc0 + 0xff + 0xe + 0xe); - { - // ref-error@+2 {{initialized by a constant expression}} - // ref-note@+1 {{read of uninitialized object is not allowed in a constant expression}} - constexpr auto _bad = g().b2; - } - } -} - -namespace BoolVectors { - typedef bool bool32 __attribute__((ext_vector_type(32))); - constexpr auto v = bit_cast(0xa1c0ffee); -#if LITTLE_END - static_assert(!v[0]); - static_assert(v[1]); - static_assert(v[2]); - static_assert(v[3]); - static_assert(!v[4]); - static_assert(v[5]); - static_assert(v[6]); - static_assert(v[7]); - - static_assert(v[8]); - static_assert(v[9]); - static_assert(v[10]); - static_assert(v[11]); - static_assert(v[12]); - static_assert(v[13]); - static_assert(v[14]); - static_assert(v[15]); - - static_assert(!v[16]); - static_assert(!v[17]); - static_assert(!v[18]); - static_assert(!v[19]); - static_assert(!v[20]); - static_assert(!v[21]); - static_assert(v[22]); - static_assert(v[23]); - - static_assert(v[24]); - static_assert(!v[25]); - static_assert(!v[26]); - static_assert(!v[27]); - static_assert(!v[28]); - static_assert(v[29]); - static_assert(!v[30]); - static_assert(v[31]); - -#else - static_assert(v[0]); - static_assert(!v[1]); - static_assert(v[2]); - static_assert(!v[3]); - static_assert(!v[4]); - static_assert(!v[5]); - static_assert(!v[6]); - static_assert(v[7]); - - static_assert(v[8]); - static_assert(v[9]); - static_assert(!v[10]); - static_assert(!v[11]); - static_assert(!v[12]); - static_assert(!v[13]); - static_assert(!v[14]); - static_assert(!v[15]); - - static_assert(v[16]); - static_assert(v[17]); - static_assert(v[18]); - static_assert(v[19]); - static_assert(v[20]); - static_assert(v[21]); - static_assert(v[22]); - static_assert(v[23]); - - static_assert(v[24]); - static_assert(v[25]); - static_assert(v[26]); - static_assert(!v[27]); - static_assert(v[28]); - static_assert(v[29]); - static_assert(v[30]); - static_assert(!v[31]); -#endif - - struct pad { - unsigned short s; - unsigned char c; - }; - - constexpr auto p = bit_cast(v); - static_assert(p.s == (LITTLE_END ? 0xffee : 0xa1c0)); - static_assert(p.c == (LITTLE_END ? 0xc0 : 0xff)); -} - -namespace TwoShorts { - struct B { - unsigned short s0 : 8; - unsigned short s1 : 8; - }; - constexpr struct { unsigned short b1;} T = {0xc0ff}; - constexpr B MB = __builtin_bit_cast(B, T); -#if LITTLE_END - static_assert(MB.s0 == 0xff); - static_assert(MB.s1 == 0xc0); -#else - static_assert(MB.s0 == 0xc0); - static_assert(MB.s1 == 0xff); - -#endif -} - -typedef bool bool8 __attribute__((ext_vector_type(8))); -typedef bool bool9 __attribute__((ext_vector_type(9))); -typedef bool bool16 __attribute__((ext_vector_type(16))); -typedef bool bool17 __attribute__((ext_vector_type(17))); -typedef bool bool32 __attribute__((ext_vector_type(32))); -typedef bool bool128 __attribute__((ext_vector_type(128))); - -static_assert(bit_cast(bool8{1,0,1,0,1,0,1,0}) == (LITTLE_END ? 0x55 : 0xAA), ""); -constexpr bool8 b8 = __builtin_bit_cast(bool8, 0x55); // both-error {{'__builtin_bit_cast' source type 'int' does not match destination type 'bool8' (vector of 8 'bool' values) (4 vs 1 bytes)}} -static_assert(check_round_trip(static_cast(0)), ""); -static_assert(check_round_trip(static_cast(1)), ""); -static_assert(check_round_trip(static_cast(0x55)), ""); - -static_assert(bit_cast(bool16{1,1,1,1,1,0,0,0, 1,1,1,1,0,1,0,0}) == (LITTLE_END ? 0x2F1F : 0xF8F4), ""); - -static_assert(check_round_trip(static_cast(0xCAFE)), ""); -static_assert(check_round_trip(static_cast(0xCAFEBABE)), ""); -static_assert(check_round_trip(static_cast<__int128_t>(0xCAFEBABE0C05FEFEULL)), ""); - -static_assert(bit_cast, uint16_t>(0xcafe) == (LITTLE_END ? 0x95 : 0x7f)); -static_assert(bit_cast, uint16_t>(0xcafe) == (LITTLE_END ? 0x2 : 0xf)); -static_assert(bit_cast, uint32_t>(0xa1cafe) == (LITTLE_END ? 0x4 : 0x5)); - -struct S { - // little endian: - // MSB .... .... LSB - // |y| |x| - // - // big endian - // MSB .... .... LSB - // |x| |y| - - unsigned char x : 4; - unsigned char y : 4; - - constexpr bool operator==(S const &other) const { - return x == other.x && y == other.y; - } -}; - -constexpr S s{0xa, 0xb}; -static_assert(bit_cast>(s) == (LITTLE_END ? 0xba : 0xab)); -static_assert(bit_cast>(s) == (LITTLE_END - ? 0xba & 0x7f - : (0xab & 0xfe) >> 1)); - -static_assert(round_trip>(s) == s); - -struct R { - unsigned int r : 31; - unsigned int : 0; - unsigned int : 32; - constexpr bool operator==(R const &other) const { - return r == other.r; - } - }; -using T = bits<31, signed long long>; -constexpr R r{0x4ac0ffee}; -constexpr T t = bit_cast(r); -static_assert(t == ((0xFFFFFFFF8 << 28) | 0x4ac0ffee)); // sign extension - -static_assert(round_trip(r) == r); -static_assert(round_trip(t) == t); - - -/// The oversized bitfield is an error on Windows and not just a warning. -#if !defined(_WIN32) -struct U { - // expected-warning@+1 {{exceeds the width of its type}} - uint32_t trunc : 33; - uint32_t u : 31; - constexpr bool operator==(U const &other) const { - return trunc == other.trunc && u == other.u; - } -}; -struct V { - uint64_t notrunc : 32; - uint64_t : 1; - uint64_t v : 31; - constexpr bool operator==(V const &other) const { - return notrunc == other.notrunc && v == other.v; - } -}; - -constexpr U u{static_cast(~0), 0x4ac0ffee}; -constexpr V v = bit_cast(u); -static_assert(v.v == 0x4ac0ffee); - -static_assert(round_trip(u) == u); -static_assert(round_trip(v) == v); - -constexpr auto w = bit_cast>(u); -static_assert(w == (LITTLE_END - ? 0x4ac0ffee & 0xFFF - : (0x4ac0ffee & (0xFFF << (31 - 12))) >> (31-12) - )); -#endif - - -namespace NestedStructures { - struct J { - struct { - uint16_t k : 12; - } K; - struct { - uint16_t l : 4; - } L; - }; - - static_assert(sizeof(J) == 4); - constexpr J j = bit_cast(0x8c0ffee5); - - static_assert(j.K.k == (LITTLE_END ? 0xee5 : 0x8c0)); - static_assert(j.L.l == 0xf /* yay symmetry */); - static_assert(bit_cast>(j) == 0xf); - struct N { - bits<12, uint16_t> k; - uint16_t : 16; - }; - static_assert(bit_cast(j).k == j.K.k); - - struct M { - bits<4, uint16_t, 0> m[2]; - constexpr bool operator==(const M& rhs) const { - return m[0] == rhs.m[0] && m[1] == rhs.m[1]; - }; - }; - #if LITTLE_END == 1 - constexpr uint16_t want[2] = {0x5, 0xf}; - #else - constexpr uint16_t want[2] = {0x8000, 0xf000}; - #endif - - static_assert(bit_cast(j) == bit_cast(want)); -} - -namespace Enums { - // ensure we're packed into the top 2 bits - constexpr int pad = LITTLE_END ? 6 : 0; - struct X - { - char : pad; - enum class direction: char { left, right, up, down } direction : 2; - }; - - constexpr X x = { X::direction::down }; - static_assert(bit_cast>(x) == -1); - static_assert(bit_cast>(x) == 3); - static_assert( - bit_cast((unsigned char)0x40).direction == X::direction::right); -} diff --git a/clang/test/AST/ByteCode/builtin-bit-cast.cpp b/clang/test/AST/ByteCode/builtin-bit-cast.cpp index e956675b18b85..0fecde59cd57c 100644 --- a/clang/test/AST/ByteCode/builtin-bit-cast.cpp +++ b/clang/test/AST/ByteCode/builtin-bit-cast.cpp @@ -186,6 +186,72 @@ namespace bitint { // ref-note {{initializer of 'IB' is not a constant expression}} } +namespace BitFields { + struct BitFields { + unsigned a : 2; + unsigned b : 30; + }; + + constexpr unsigned A = __builtin_bit_cast(unsigned, BitFields{3, 16}); // ref-error {{must be initialized by a constant expression}} \ + // ref-note {{not yet supported}} \ + // ref-note {{declared here}} + static_assert(A == (LITTLE_END ? 67 : 3221225488)); // ref-error {{not an integral constant expression}} \ + // ref-note {{initializer of 'A'}} + + + void bitfield_indeterminate() { + struct BF { unsigned char z : 2; }; + enum byte : unsigned char {}; + + constexpr BF bf = {0x3}; + /// Requires bitcasts to composite types. + // static_assert(bit_cast>(bf).bits == bf.z); + // static_assert(bit_cast(bf)); + +#if 0 + // static_assert(__builtin_bit_cast(byte, bf)); + + struct M { + // expected-note@+1 {{subobject declared here}} + unsigned char mem[sizeof(BF)]; + }; + // expected-error@+2 {{initialized by a constant expression}} + // expected-note@+1 {{not initialized}} + constexpr M m = bit_cast(bf); + + constexpr auto f = []() constexpr { + // bits<24, unsigned int, LITTLE_END ? 0 : 8> B = {0xc0ffee}; + constexpr struct { unsigned short b1; unsigned char b0; } B = {0xc0ff, 0xee}; + return bit_cast>(B); + }; + + static_assert(f()[0] + f()[1] + f()[2] == 0xc0 + 0xff + 0xee); + { + // expected-error@+2 {{initialized by a constant expression}} + // expected-note@+1 {{read of uninitialized object is not allowed in a constant expression}} + constexpr auto _bad = f()[3]; + } + + struct B { + unsigned short s0 : 8; + unsigned short s1 : 8; + std::byte b0 : 4; + std::byte b1 : 4; + std::byte b2 : 4; + }; + constexpr auto g = [f]() constexpr { + return bit_cast(f()); + }; + static_assert(g().s0 + g().s1 + g().b0 + g().b1 == 0xc0 + 0xff + 0xe + 0xe); + { + // expected-error@+2 {{initialized by a constant expression}} + // expected-note@+1 {{read of uninitialized object is not allowed in a constant expression}} + constexpr auto _bad = g().b2; + } +#endif + } +} + namespace Classes { class A { public: @@ -265,21 +331,6 @@ static_assert(check_round_trip(splice)); #endif -namespace Overread { - /// This used to crash becaus we were reading all elements of the - /// source array even though we should only be reading 1. - constexpr int a[] = {2,3, 4, 5}; - constexpr int b = __builtin_bit_cast(int, *(a + 1)); - static_assert(b == 3); - - struct S { - int a; - }; - constexpr S ss[] = {{1},{2}}; - constexpr int c = __builtin_bit_cast(int, *(ss + 1)); - static_assert(c == 2); -} - /// --------------------------------------------------------------------------- /// From here on, it's things copied from test/SemaCXX/constexpr-builtin-bit.cast.cpp @@ -459,6 +510,27 @@ static_assert(bit_cast(test_vector) == (LITTLE_END static_assert(check_round_trip(0xCAFEBABE0C05FEFEULL), ""); static_assert(check_round_trip(0xCAFEBABE0C05FEFEULL), ""); +typedef bool bool8 __attribute__((ext_vector_type(8))); +typedef bool bool9 __attribute__((ext_vector_type(9))); +typedef bool bool16 __attribute__((ext_vector_type(16))); +typedef bool bool17 __attribute__((ext_vector_type(17))); +typedef bool bool32 __attribute__((ext_vector_type(32))); +typedef bool bool128 __attribute__((ext_vector_type(128))); + +static_assert(bit_cast(bool8{1,0,1,0,1,0,1,0}) == (LITTLE_END ? 0x55 : 0xAA), ""); +constexpr bool8 b8 = __builtin_bit_cast(bool8, 0x55); // both-error {{'__builtin_bit_cast' source type 'int' does not match destination type 'bool8' (vector of 8 'bool' values) (4 vs 1 bytes)}} +#if 0 +static_assert(check_round_trip(static_cast(0)), ""); +static_assert(check_round_trip(static_cast(1)), ""); +static_assert(check_round_trip(static_cast(0x55)), ""); + +static_assert(bit_cast(bool16{1,1,1,1,1,0,0,0, 1,1,1,1,0,1,0,0}) == (LITTLE_END ? 0x2F1F : 0xF8F4), ""); + +static_assert(check_round_trip(static_cast(0xCAFE)), ""); +static_assert(check_round_trip(static_cast(0xCAFEBABE)), ""); +static_assert(check_round_trip(static_cast<__int128_t>(0xCAFEBABE0C05FEFEULL)), ""); +#endif + #if 0 // expected-error@+2 {{constexpr variable 'bad_bool9_to_short' must be initialized by a constant expression}} // expected-note@+1 {{bit_cast involving type 'bool __attribute__((ext_vector_type(9)))' (vector of 9 'bool' values) is not allowed in a constant expression; element size 1 * element count 9 is not a multiple of the byte size 8}} @@ -487,20 +559,3 @@ namespace test_complex { constexpr double D = __builtin_bit_cast(double, test_float_complex); constexpr int M = __builtin_bit_cast(int, test_int_complex); // both-error {{size of '__builtin_bit_cast' source type 'const _Complex unsigned int' does not match destination type 'int' (8 vs 4 bytes)}} } - - -namespace OversizedBitField { -#if defined(_WIN32) - /// This is an error (not just a warning) on Windows and the field ends up with a size of 1 instead of 4. -#else - typedef unsigned __INT16_TYPE__ uint16_t; - typedef unsigned __INT32_TYPE__ uint32_t; - struct S { - uint16_t a : 20; // both-warning {{exceeds the width of its type}} - }; - - static_assert(sizeof(S) == 4); - static_assert(__builtin_bit_cast(S, (uint32_t)32).a == (LITTLE_END ? 32 : 0)); // ref-error {{not an integral constant expression}} \ - // ref-note {{constexpr bit_cast involving bit-field is not yet supported}} -#endif -} diff --git a/clang/unittests/AST/ByteCode/BitcastBuffer.cpp b/clang/unittests/AST/ByteCode/BitcastBuffer.cpp deleted file mode 100644 index 02c38a2201363..0000000000000 --- a/clang/unittests/AST/ByteCode/BitcastBuffer.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "../../../lib/AST/ByteCode/BitcastBuffer.h" -#include "clang/AST/ASTContext.h" -#include "gtest/gtest.h" -#include -#include -#include -#include -#include - -using namespace clang; -using namespace clang::interp; - -TEST(BitcastBuffer, PushData) { - BitcastBuffer Buff1(Bytes(sizeof(int)).toBits()); - - const unsigned V = 0xCAFEBABE; - Bits VSize = Bytes(sizeof(V)).toBits(); - std::byte Data[sizeof(V)]; - std::memcpy(Data, &V, sizeof(V)); - - Endian HostEndianness = - llvm::sys::IsLittleEndianHost ? Endian::Little : Endian::Big; - - Buff1.pushData(Data, Bits::zero(), VSize, HostEndianness); - - // The buffer is in host-endianness. - if (llvm::sys::IsLittleEndianHost) { - ASSERT_EQ(Buff1.Data[0], std::byte{0xbe}); - ASSERT_EQ(Buff1.Data[1], std::byte{0xba}); - ASSERT_EQ(Buff1.Data[2], std::byte{0xfe}); - ASSERT_EQ(Buff1.Data[3], std::byte{0xca}); - } else { - ASSERT_EQ(Buff1.Data[0], std::byte{0xca}); - ASSERT_EQ(Buff1.Data[1], std::byte{0xfe}); - ASSERT_EQ(Buff1.Data[2], std::byte{0xba}); - ASSERT_EQ(Buff1.Data[3], std::byte{0xbe}); - } - - { - unsigned V2; - auto D = Buff1.copyBits(Bits::zero(), VSize, VSize, Endian::Little); - std::memcpy(&V2, D.get(), sizeof(V)); - ASSERT_EQ(V, V2); - - D = Buff1.copyBits(Bits::zero(), VSize, VSize, Endian::Big); - std::memcpy(&V2, D.get(), sizeof(V)); - ASSERT_EQ(V, V2); - } - - BitcastBuffer Buff2(Bytes(sizeof(int)).toBits()); - { - short s1 = 0xCAFE; - short s2 = 0xBABE; - std::byte sdata[2]; - - std::memcpy(sdata, &s1, sizeof(s1)); - Buff2.pushData(sdata, Bits::zero(), Bits(sizeof(s1) * 8), HostEndianness); - std::memcpy(sdata, &s2, sizeof(s2)); - Buff2.pushData(sdata, Bits(sizeof(s1) * 8), Bits(sizeof(s2) * 8), - HostEndianness); - } - - if (llvm::sys::IsLittleEndianHost) { - ASSERT_EQ(Buff2.Data[0], std::byte{0xfe}); - ASSERT_EQ(Buff2.Data[1], std::byte{0xca}); - ASSERT_EQ(Buff2.Data[2], std::byte{0xbe}); - ASSERT_EQ(Buff2.Data[3], std::byte{0xba}); - } else { - ASSERT_EQ(Buff2.Data[0], std::byte{0xba}); - ASSERT_EQ(Buff2.Data[1], std::byte{0xbe}); - ASSERT_EQ(Buff2.Data[2], std::byte{0xca}); - ASSERT_EQ(Buff2.Data[3], std::byte{0xfe}); - } - - { - unsigned V; - auto D = Buff2.copyBits(Bits::zero(), Bits(sizeof(V) * 8), - Bits(sizeof(V) * 8), Endian::Little); - std::memcpy(&V, D.get(), sizeof(V)); - ASSERT_EQ(V, 0xBABECAFE); - - D = Buff2.copyBits(Bits::zero(), Bits(sizeof(V) * 8), Bits(sizeof(V) * 8), - Endian::Big); - std::memcpy(&V, D.get(), sizeof(V)); - ASSERT_EQ(V, 0xBABECAFE); - } -} diff --git a/clang/unittests/AST/ByteCode/CMakeLists.txt b/clang/unittests/AST/ByteCode/CMakeLists.txt index b862fb4834fbd..ea727cdd4412b 100644 --- a/clang/unittests/AST/ByteCode/CMakeLists.txt +++ b/clang/unittests/AST/ByteCode/CMakeLists.txt @@ -1,5 +1,4 @@ add_clang_unittest(InterpTests - BitcastBuffer.cpp Descriptor.cpp toAPValue.cpp ) From a30f7e190b8a4b6cdb9d9c050be4af660f237931 Mon Sep 17 00:00:00 2001 From: LLVM GN Syncbot Date: Wed, 4 Dec 2024 10:44:27 +0000 Subject: [PATCH 016/593] [gn build] Port 54db16221c92 --- llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn | 1 - llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn | 1 - 2 files changed, 2 deletions(-) diff --git a/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn b/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn index db2ee2e41d2bd..6bfdeedfacd26 100644 --- a/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn @@ -62,7 +62,6 @@ static_library("AST") { "AttrDocTable.cpp", "AttrImpl.cpp", "Availability.cpp", - "ByteCode/BitcastBuffer.cpp", "ByteCode/ByteCodeEmitter.cpp", "ByteCode/Compiler.cpp", "ByteCode/Context.cpp", diff --git a/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn b/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn index 04c646b059ece..fcdb9a5b1aeb2 100644 --- a/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn @@ -10,7 +10,6 @@ unittest("InterpTests") { "//clang/lib/Tooling", ] sources = [ - "BitcastBuffer.cpp", "Descriptor.cpp", "toAPValue.cpp", ] From ecbe4d1e360e25c0634a3a62fbd01e8df5bb0c1b Mon Sep 17 00:00:00 2001 From: John Brawn Date: Wed, 4 Dec 2024 10:53:04 +0000 Subject: [PATCH 017/593] [IR] Allow fast math flags on fptrunc and fpext (#115894) This consists of: * Make these instructions part of FPMathOperator. * Adjust bitcode/ir readers/writers to expect fast math flags on these instructions. * Make IRBuilder set the fast math flags on these instructions. * Update langref and release notes. * Update a bunch of tests. Some of these are due to InstCombineCasts incorrectly adding fast math flags to fptrunc, which will be fixed in a later patch. --- clang/test/CodeGen/X86/cx-complex-range.c | 176 +++++++++--------- clang/test/CodeGen/cx-complex-range.c | 68 +++---- .../CodeGen/matrix-type-operators-fast-math.c | 12 +- clang/test/CodeGen/nofpclass.c | 60 +++--- clang/test/CodeGenCUDA/amdgpu-atomic-ops.cu | 2 +- clang/test/CodeGenHIP/printf_nonhostcall.cpp | 4 +- .../__clang_hip_math_ocml_rounded_ops.hip | 32 ++-- llvm/docs/LangRef.rst | 24 ++- llvm/docs/ReleaseNotes.md | 2 + llvm/include/llvm/IR/IRBuilder.h | 29 +-- llvm/include/llvm/IR/Operator.h | 2 + llvm/lib/AsmParser/LLParser.cpp | 12 +- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 5 + llvm/test/Assembler/fast-math-flags.ll | 50 +++++ llvm/test/Bitcode/compatibility.ll | 42 +++++ llvm/test/Transforms/InstCombine/fpcast.ll | 4 +- 16 files changed, 325 insertions(+), 199 deletions(-) diff --git a/clang/test/CodeGen/X86/cx-complex-range.c b/clang/test/CodeGen/X86/cx-complex-range.c index a0e6dc219b36f..f87091427df71 100644 --- a/clang/test/CodeGen/X86/cx-complex-range.c +++ b/clang/test/CodeGen/X86/cx-complex-range.c @@ -266,14 +266,14 @@ // BASIC_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // BASIC_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // BASIC_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// BASIC_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// BASIC_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// BASIC_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// BASIC_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // BASIC_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // BASIC_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // BASIC_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // BASIC_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// BASIC_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// BASIC_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// BASIC_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// BASIC_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // BASIC_FAST-NEXT: [[TMP0:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT2]] // BASIC_FAST-NEXT: [[TMP1:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT3]] // BASIC_FAST-NEXT: [[TMP2:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[TMP0]], [[TMP1]] @@ -285,8 +285,8 @@ // BASIC_FAST-NEXT: [[TMP8:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[TMP6]], [[TMP7]] // BASIC_FAST-NEXT: [[TMP9:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP2]], [[TMP5]] // BASIC_FAST-NEXT: [[TMP10:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP8]], [[TMP5]] -// BASIC_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[TMP9]] to half -// BASIC_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[TMP10]] to half +// BASIC_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP9]] to half +// BASIC_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP10]] to half // BASIC_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // BASIC_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // BASIC_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -307,22 +307,22 @@ // FULL_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // FULL_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // FULL_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// FULL_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// FULL_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// FULL_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// FULL_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // FULL_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // FULL_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // FULL_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // FULL_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// FULL_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// FULL_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// FULL_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// FULL_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // FULL_FAST-NEXT: [[CALL:%.*]] = call reassoc nnan ninf nsz arcp afn nofpclass(nan inf) <2 x float> @__divsc3(float noundef nofpclass(nan inf) [[EXT]], float noundef nofpclass(nan inf) [[EXT1]], float noundef nofpclass(nan inf) [[EXT2]], float noundef nofpclass(nan inf) [[EXT3]]) #[[ATTR1:[0-9]+]] // FULL_FAST-NEXT: store <2 x float> [[CALL]], ptr [[COERCE]], align 4 // FULL_FAST-NEXT: [[COERCE_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[COERCE]], i32 0, i32 0 // FULL_FAST-NEXT: [[COERCE_REAL:%.*]] = load float, ptr [[COERCE_REALP]], align 4 // FULL_FAST-NEXT: [[COERCE_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[COERCE]], i32 0, i32 1 // FULL_FAST-NEXT: [[COERCE_IMAG:%.*]] = load float, ptr [[COERCE_IMAGP]], align 4 -// FULL_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[COERCE_REAL]] to half -// FULL_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[COERCE_IMAG]] to half +// FULL_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[COERCE_REAL]] to half +// FULL_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[COERCE_IMAG]] to half // FULL_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // FULL_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // FULL_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -342,14 +342,14 @@ // IMPRVD_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // IMPRVD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// IMPRVD_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// IMPRVD_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// IMPRVD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// IMPRVD_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // IMPRVD_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // IMPRVD_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// IMPRVD_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// IMPRVD_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// IMPRVD_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// IMPRVD_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // IMPRVD_FAST-NEXT: [[TMP0:%.*]] = call reassoc nnan ninf nsz arcp afn float @llvm.fabs.f32(float [[EXT2]]) // IMPRVD_FAST-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn float @llvm.fabs.f32(float [[EXT3]]) // IMPRVD_FAST-NEXT: [[ABS_CMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn ugt float [[TMP0]], [[TMP1]] @@ -379,8 +379,8 @@ // IMPRVD_FAST: complex_div: // IMPRVD_FAST-NEXT: [[TMP20:%.*]] = phi reassoc nnan ninf nsz arcp afn float [ [[TMP7]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP16]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] // IMPRVD_FAST-NEXT: [[TMP21:%.*]] = phi reassoc nnan ninf nsz arcp afn float [ [[TMP10]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP19]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] -// IMPRVD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[TMP20]] to half -// IMPRVD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[TMP21]] to half +// IMPRVD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP20]] to half +// IMPRVD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP21]] to half // IMPRVD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // IMPRVD_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -400,14 +400,14 @@ // PRMTD_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // PRMTD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // PRMTD_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // PRMTD_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // PRMTD_FAST-NEXT: [[TMP0:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT2]] // PRMTD_FAST-NEXT: [[TMP1:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT3]] // PRMTD_FAST-NEXT: [[TMP2:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[TMP0]], [[TMP1]] @@ -419,8 +419,8 @@ // PRMTD_FAST-NEXT: [[TMP8:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[TMP6]], [[TMP7]] // PRMTD_FAST-NEXT: [[TMP9:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP2]], [[TMP5]] // PRMTD_FAST-NEXT: [[TMP10:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP8]], [[TMP5]] -// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[TMP9]] to half -// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[TMP10]] to half +// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP9]] to half +// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP10]] to half // PRMTD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // PRMTD_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -636,22 +636,22 @@ _Complex _Float16 divf16(_Complex _Float16 a, _Complex _Float16 b) { // BASIC_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // BASIC_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // BASIC_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// BASIC_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// BASIC_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// BASIC_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// BASIC_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // BASIC_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // BASIC_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // BASIC_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // BASIC_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// BASIC_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// BASIC_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// BASIC_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// BASIC_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // BASIC_FAST-NEXT: [[MUL_AC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT2]] // BASIC_FAST-NEXT: [[MUL_BD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT3]] // BASIC_FAST-NEXT: [[MUL_AD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT3]] // BASIC_FAST-NEXT: [[MUL_BC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT2]] // BASIC_FAST-NEXT: [[MUL_R:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[MUL_AC]], [[MUL_BD]] // BASIC_FAST-NEXT: [[MUL_I:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[MUL_AD]], [[MUL_BC]] -// BASIC_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[MUL_R]] to half -// BASIC_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[MUL_I]] to half +// BASIC_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[MUL_R]] to half +// BASIC_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[MUL_I]] to half // BASIC_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // BASIC_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // BASIC_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -672,14 +672,14 @@ _Complex _Float16 divf16(_Complex _Float16 a, _Complex _Float16 b) { // FULL_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // FULL_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // FULL_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// FULL_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// FULL_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// FULL_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// FULL_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // FULL_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // FULL_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // FULL_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // FULL_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// FULL_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// FULL_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// FULL_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// FULL_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // FULL_FAST-NEXT: [[MUL_AC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT2]] // FULL_FAST-NEXT: [[MUL_BD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT3]] // FULL_FAST-NEXT: [[MUL_AD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT3]] @@ -702,8 +702,8 @@ _Complex _Float16 divf16(_Complex _Float16 a, _Complex _Float16 b) { // FULL_FAST: complex_mul_cont: // FULL_FAST-NEXT: [[REAL_MUL_PHI:%.*]] = phi reassoc nnan ninf nsz arcp afn float [ [[MUL_R]], [[ENTRY:%.*]] ], [ [[MUL_R]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_REAL]], [[COMPLEX_MUL_LIBCALL]] ] // FULL_FAST-NEXT: [[IMAG_MUL_PHI:%.*]] = phi reassoc nnan ninf nsz arcp afn float [ [[MUL_I]], [[ENTRY]] ], [ [[MUL_I]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_IMAG]], [[COMPLEX_MUL_LIBCALL]] ] -// FULL_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[REAL_MUL_PHI]] to half -// FULL_FAST-NEXT: [[UNPROMOTION5:%.*]] = fptrunc float [[IMAG_MUL_PHI]] to half +// FULL_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[REAL_MUL_PHI]] to half +// FULL_FAST-NEXT: [[UNPROMOTION5:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[IMAG_MUL_PHI]] to half // FULL_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // FULL_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // FULL_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -723,22 +723,22 @@ _Complex _Float16 divf16(_Complex _Float16 a, _Complex _Float16 b) { // IMPRVD_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // IMPRVD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// IMPRVD_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// IMPRVD_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// IMPRVD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// IMPRVD_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // IMPRVD_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // IMPRVD_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// IMPRVD_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// IMPRVD_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// IMPRVD_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// IMPRVD_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // IMPRVD_FAST-NEXT: [[MUL_AC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT2]] // IMPRVD_FAST-NEXT: [[MUL_BD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT3]] // IMPRVD_FAST-NEXT: [[MUL_AD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT3]] // IMPRVD_FAST-NEXT: [[MUL_BC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT2]] // IMPRVD_FAST-NEXT: [[MUL_R:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[MUL_AC]], [[MUL_BD]] // IMPRVD_FAST-NEXT: [[MUL_I:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[MUL_AD]], [[MUL_BC]] -// IMPRVD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[MUL_R]] to half -// IMPRVD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[MUL_I]] to half +// IMPRVD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[MUL_R]] to half +// IMPRVD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[MUL_I]] to half // IMPRVD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // IMPRVD_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -758,22 +758,22 @@ _Complex _Float16 divf16(_Complex _Float16 a, _Complex _Float16 b) { // PRMTD_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // PRMTD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext half [[A_REAL]] to float -// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext half [[A_IMAG]] to float +// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // PRMTD_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[B_REAL:%.*]] = load half, ptr [[B_REALP]], align 2 // PRMTD_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[B]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[B_IMAG:%.*]] = load half, ptr [[B_IMAGP]], align 2 -// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext half [[B_REAL]] to float -// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext half [[B_IMAG]] to float +// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_REAL]] to float +// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[B_IMAG]] to float // PRMTD_FAST-NEXT: [[MUL_AC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT2]] // PRMTD_FAST-NEXT: [[MUL_BD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT3]] // PRMTD_FAST-NEXT: [[MUL_AD:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT3]] // PRMTD_FAST-NEXT: [[MUL_BC:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT1]], [[EXT2]] // PRMTD_FAST-NEXT: [[MUL_R:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[MUL_AC]], [[MUL_BD]] // PRMTD_FAST-NEXT: [[MUL_I:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[MUL_AD]], [[MUL_BC]] -// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[MUL_R]] to half -// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc float [[MUL_I]] to half +// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[MUL_R]] to half +// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[MUL_I]] to half // PRMTD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // PRMTD_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -1158,8 +1158,8 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // BASIC_FAST-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // BASIC_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // BASIC_FAST-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// BASIC_FAST-NEXT: [[CONV:%.*]] = fpext half [[C_REAL]] to x86_fp80 -// BASIC_FAST-NEXT: [[CONV1:%.*]] = fpext half [[C_IMAG]] to x86_fp80 +// BASIC_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_REAL]] to x86_fp80 +// BASIC_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_IMAG]] to x86_fp80 // BASIC_FAST-NEXT: [[TMP0:%.*]] = fmul reassoc nnan ninf nsz arcp afn x86_fp80 [[B_REAL]], [[CONV]] // BASIC_FAST-NEXT: [[TMP1:%.*]] = fmul reassoc nnan ninf nsz arcp afn x86_fp80 [[B_IMAG]], [[CONV1]] // BASIC_FAST-NEXT: [[TMP2:%.*]] = fadd reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP0]], [[TMP1]] @@ -1171,16 +1171,16 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // BASIC_FAST-NEXT: [[TMP8:%.*]] = fsub reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP6]], [[TMP7]] // BASIC_FAST-NEXT: [[TMP9:%.*]] = fdiv reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP2]], [[TMP5]] // BASIC_FAST-NEXT: [[TMP10:%.*]] = fdiv reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP8]], [[TMP5]] -// BASIC_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP9]] to half -// BASIC_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP10]] to half -// BASIC_FAST-NEXT: [[EXT:%.*]] = fpext half [[CONV2]] to float -// BASIC_FAST-NEXT: [[EXT4:%.*]] = fpext half [[CONV3]] to float +// BASIC_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP9]] to half +// BASIC_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP10]] to half +// BASIC_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV2]] to float +// BASIC_FAST-NEXT: [[EXT4:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV3]] to float // BASIC_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 0 // BASIC_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // BASIC_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // BASIC_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// BASIC_FAST-NEXT: [[EXT5:%.*]] = fpext half [[A_REAL]] to float -// BASIC_FAST-NEXT: [[EXT6:%.*]] = fpext half [[A_IMAG]] to float +// BASIC_FAST-NEXT: [[EXT5:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// BASIC_FAST-NEXT: [[EXT6:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // BASIC_FAST-NEXT: [[TMP11:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT5]] // BASIC_FAST-NEXT: [[TMP12:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT4]], [[EXT6]] // BASIC_FAST-NEXT: [[TMP13:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[TMP11]], [[TMP12]] @@ -1192,8 +1192,8 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // BASIC_FAST-NEXT: [[TMP19:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[TMP17]], [[TMP18]] // BASIC_FAST-NEXT: [[TMP20:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP13]], [[TMP16]] // BASIC_FAST-NEXT: [[TMP21:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP19]], [[TMP16]] -// BASIC_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[TMP20]] to half -// BASIC_FAST-NEXT: [[UNPROMOTION7:%.*]] = fptrunc float [[TMP21]] to half +// BASIC_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP20]] to half +// BASIC_FAST-NEXT: [[UNPROMOTION7:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP21]] to half // BASIC_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // BASIC_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // BASIC_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -1218,29 +1218,29 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // FULL_FAST-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // FULL_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // FULL_FAST-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// FULL_FAST-NEXT: [[CONV:%.*]] = fpext half [[C_REAL]] to x86_fp80 -// FULL_FAST-NEXT: [[CONV1:%.*]] = fpext half [[C_IMAG]] to x86_fp80 +// FULL_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_REAL]] to x86_fp80 +// FULL_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_IMAG]] to x86_fp80 // FULL_FAST-NEXT: [[CALL:%.*]] = call reassoc nnan ninf nsz arcp afn nofpclass(nan inf) { x86_fp80, x86_fp80 } @__divxc3(x86_fp80 noundef nofpclass(nan inf) [[B_REAL]], x86_fp80 noundef nofpclass(nan inf) [[B_IMAG]], x86_fp80 noundef nofpclass(nan inf) [[CONV]], x86_fp80 noundef nofpclass(nan inf) [[CONV1]]) #[[ATTR1]] // FULL_FAST-NEXT: [[TMP0:%.*]] = extractvalue { x86_fp80, x86_fp80 } [[CALL]], 0 // FULL_FAST-NEXT: [[TMP1:%.*]] = extractvalue { x86_fp80, x86_fp80 } [[CALL]], 1 -// FULL_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP0]] to half -// FULL_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP1]] to half -// FULL_FAST-NEXT: [[EXT:%.*]] = fpext half [[CONV2]] to float -// FULL_FAST-NEXT: [[EXT4:%.*]] = fpext half [[CONV3]] to float +// FULL_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP0]] to half +// FULL_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP1]] to half +// FULL_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV2]] to float +// FULL_FAST-NEXT: [[EXT4:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV3]] to float // FULL_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 0 // FULL_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // FULL_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // FULL_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// FULL_FAST-NEXT: [[EXT5:%.*]] = fpext half [[A_REAL]] to float -// FULL_FAST-NEXT: [[EXT6:%.*]] = fpext half [[A_IMAG]] to float +// FULL_FAST-NEXT: [[EXT5:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// FULL_FAST-NEXT: [[EXT6:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // FULL_FAST-NEXT: [[CALL7:%.*]] = call reassoc nnan ninf nsz arcp afn nofpclass(nan inf) <2 x float> @__divsc3(float noundef nofpclass(nan inf) [[EXT]], float noundef nofpclass(nan inf) [[EXT4]], float noundef nofpclass(nan inf) [[EXT5]], float noundef nofpclass(nan inf) [[EXT6]]) #[[ATTR1]] // FULL_FAST-NEXT: store <2 x float> [[CALL7]], ptr [[COERCE]], align 4 // FULL_FAST-NEXT: [[COERCE_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[COERCE]], i32 0, i32 0 // FULL_FAST-NEXT: [[COERCE_REAL:%.*]] = load float, ptr [[COERCE_REALP]], align 4 // FULL_FAST-NEXT: [[COERCE_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[COERCE]], i32 0, i32 1 // FULL_FAST-NEXT: [[COERCE_IMAG:%.*]] = load float, ptr [[COERCE_IMAGP]], align 4 -// FULL_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[COERCE_REAL]] to half -// FULL_FAST-NEXT: [[UNPROMOTION8:%.*]] = fptrunc float [[COERCE_IMAG]] to half +// FULL_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[COERCE_REAL]] to half +// FULL_FAST-NEXT: [[UNPROMOTION8:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[COERCE_IMAG]] to half // FULL_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // FULL_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // FULL_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -1264,8 +1264,8 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // IMPRVD_FAST-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // IMPRVD_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// IMPRVD_FAST-NEXT: [[CONV:%.*]] = fpext half [[C_REAL]] to x86_fp80 -// IMPRVD_FAST-NEXT: [[CONV1:%.*]] = fpext half [[C_IMAG]] to x86_fp80 +// IMPRVD_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_REAL]] to x86_fp80 +// IMPRVD_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_IMAG]] to x86_fp80 // IMPRVD_FAST-NEXT: [[TMP0:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV]]) // IMPRVD_FAST-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV1]]) // IMPRVD_FAST-NEXT: [[ABS_CMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn ugt x86_fp80 [[TMP0]], [[TMP1]] @@ -1295,16 +1295,16 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // IMPRVD_FAST: complex_div: // IMPRVD_FAST-NEXT: [[TMP20:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP7]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP16]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] // IMPRVD_FAST-NEXT: [[TMP21:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP10]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP19]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] -// IMPRVD_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP20]] to half -// IMPRVD_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP21]] to half -// IMPRVD_FAST-NEXT: [[EXT:%.*]] = fpext half [[CONV2]] to float -// IMPRVD_FAST-NEXT: [[EXT4:%.*]] = fpext half [[CONV3]] to float +// IMPRVD_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP20]] to half +// IMPRVD_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP21]] to half +// IMPRVD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV2]] to float +// IMPRVD_FAST-NEXT: [[EXT4:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV3]] to float // IMPRVD_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // IMPRVD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// IMPRVD_FAST-NEXT: [[EXT5:%.*]] = fpext half [[A_REAL]] to float -// IMPRVD_FAST-NEXT: [[EXT6:%.*]] = fpext half [[A_IMAG]] to float +// IMPRVD_FAST-NEXT: [[EXT5:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// IMPRVD_FAST-NEXT: [[EXT6:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // IMPRVD_FAST-NEXT: [[TMP22:%.*]] = call reassoc nnan ninf nsz arcp afn float @llvm.fabs.f32(float [[EXT5]]) // IMPRVD_FAST-NEXT: [[TMP23:%.*]] = call reassoc nnan ninf nsz arcp afn float @llvm.fabs.f32(float [[EXT6]]) // IMPRVD_FAST-NEXT: [[ABS_CMP7:%.*]] = fcmp reassoc nnan ninf nsz arcp afn ugt float [[TMP22]], [[TMP23]] @@ -1334,8 +1334,8 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // IMPRVD_FAST: complex_div10: // IMPRVD_FAST-NEXT: [[TMP42:%.*]] = phi reassoc nnan ninf nsz arcp afn float [ [[TMP29]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI8]] ], [ [[TMP38]], [[ABS_RHSR_LESS_THAN_ABS_RHSI9]] ] // IMPRVD_FAST-NEXT: [[TMP43:%.*]] = phi reassoc nnan ninf nsz arcp afn float [ [[TMP32]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI8]] ], [ [[TMP41]], [[ABS_RHSR_LESS_THAN_ABS_RHSI9]] ] -// IMPRVD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[TMP42]] to half -// IMPRVD_FAST-NEXT: [[UNPROMOTION11:%.*]] = fptrunc float [[TMP43]] to half +// IMPRVD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP42]] to half +// IMPRVD_FAST-NEXT: [[UNPROMOTION11:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP43]] to half // IMPRVD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // IMPRVD_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -1359,8 +1359,8 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // PRMTD_FAST-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // PRMTD_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// PRMTD_FAST-NEXT: [[CONV:%.*]] = fpext half [[C_REAL]] to x86_fp80 -// PRMTD_FAST-NEXT: [[CONV1:%.*]] = fpext half [[C_IMAG]] to x86_fp80 +// PRMTD_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_REAL]] to x86_fp80 +// PRMTD_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[C_IMAG]] to x86_fp80 // PRMTD_FAST-NEXT: [[TMP0:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV]]) // PRMTD_FAST-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV1]]) // PRMTD_FAST-NEXT: [[ABS_CMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn ugt x86_fp80 [[TMP0]], [[TMP1]] @@ -1390,16 +1390,16 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // PRMTD_FAST: complex_div: // PRMTD_FAST-NEXT: [[TMP20:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP7]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP16]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] // PRMTD_FAST-NEXT: [[TMP21:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP10]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP19]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] -// PRMTD_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP20]] to half -// PRMTD_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP21]] to half -// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext half [[CONV2]] to float -// PRMTD_FAST-NEXT: [[EXT4:%.*]] = fpext half [[CONV3]] to float +// PRMTD_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP20]] to half +// PRMTD_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP21]] to half +// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV2]] to float +// PRMTD_FAST-NEXT: [[EXT4:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[CONV3]] to float // PRMTD_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[A_REAL:%.*]] = load half, ptr [[A_REALP]], align 2 // PRMTD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[A]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[A_IMAG:%.*]] = load half, ptr [[A_IMAGP]], align 2 -// PRMTD_FAST-NEXT: [[EXT5:%.*]] = fpext half [[A_REAL]] to float -// PRMTD_FAST-NEXT: [[EXT6:%.*]] = fpext half [[A_IMAG]] to float +// PRMTD_FAST-NEXT: [[EXT5:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_REAL]] to float +// PRMTD_FAST-NEXT: [[EXT6:%.*]] = fpext reassoc nnan ninf nsz arcp afn half [[A_IMAG]] to float // PRMTD_FAST-NEXT: [[TMP22:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT]], [[EXT5]] // PRMTD_FAST-NEXT: [[TMP23:%.*]] = fmul reassoc nnan ninf nsz arcp afn float [[EXT4]], [[EXT6]] // PRMTD_FAST-NEXT: [[TMP24:%.*]] = fadd reassoc nnan ninf nsz arcp afn float [[TMP22]], [[TMP23]] @@ -1411,8 +1411,8 @@ _Complex _Float16 mulf16(_Complex _Float16 a, _Complex _Float16 b) { // PRMTD_FAST-NEXT: [[TMP30:%.*]] = fsub reassoc nnan ninf nsz arcp afn float [[TMP28]], [[TMP29]] // PRMTD_FAST-NEXT: [[TMP31:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP24]], [[TMP27]] // PRMTD_FAST-NEXT: [[TMP32:%.*]] = fdiv reassoc nnan ninf nsz arcp afn float [[TMP30]], [[TMP27]] -// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[TMP31]] to half -// PRMTD_FAST-NEXT: [[UNPROMOTION7:%.*]] = fptrunc float [[TMP32]] to half +// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP31]] to half +// PRMTD_FAST-NEXT: [[UNPROMOTION7:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn float [[TMP32]] to half // PRMTD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // PRMTD_FAST-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 diff --git a/clang/test/CodeGen/cx-complex-range.c b/clang/test/CodeGen/cx-complex-range.c index b2259031d7563..88300041061aa 100644 --- a/clang/test/CodeGen/cx-complex-range.c +++ b/clang/test/CodeGen/cx-complex-range.c @@ -485,14 +485,14 @@ // PRMTD_FAST-NEXT: [[A_REAL:%.*]] = load float, ptr [[A_REALP]], align 4 // PRMTD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[A_IMAG:%.*]] = load float, ptr [[A_IMAGP]], align 4 -// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext float [[A_REAL]] to double -// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext float [[A_IMAG]] to double +// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[A_REAL]] to double +// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[A_IMAG]] to double // PRMTD_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[B]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[B_REAL:%.*]] = load float, ptr [[B_REALP]], align 4 // PRMTD_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[B]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[B_IMAG:%.*]] = load float, ptr [[B_IMAGP]], align 4 -// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext float [[B_REAL]] to double -// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext float [[B_IMAG]] to double +// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[B_REAL]] to double +// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[B_IMAG]] to double // PRMTD_FAST-NEXT: [[TMP0:%.*]] = fmul reassoc nnan ninf nsz arcp afn double [[EXT]], [[EXT2]] // PRMTD_FAST-NEXT: [[TMP1:%.*]] = fmul reassoc nnan ninf nsz arcp afn double [[EXT1]], [[EXT3]] // PRMTD_FAST-NEXT: [[TMP2:%.*]] = fadd reassoc nnan ninf nsz arcp afn double [[TMP0]], [[TMP1]] @@ -504,8 +504,8 @@ // PRMTD_FAST-NEXT: [[TMP8:%.*]] = fsub reassoc nnan ninf nsz arcp afn double [[TMP6]], [[TMP7]] // PRMTD_FAST-NEXT: [[TMP9:%.*]] = fdiv reassoc nnan ninf nsz arcp afn double [[TMP2]], [[TMP5]] // PRMTD_FAST-NEXT: [[TMP10:%.*]] = fdiv reassoc nnan ninf nsz arcp afn double [[TMP8]], [[TMP5]] -// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc double [[TMP9]] to float -// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc double [[TMP10]] to float +// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn double [[TMP9]] to float +// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn double [[TMP10]] to float // PRMTD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[RETVAL]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[RETVAL]], i32 0, i32 1 // PRMTD_FAST-NEXT: store float [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 4 @@ -1530,14 +1530,14 @@ _Complex float mulf(_Complex float a, _Complex float b) { // PRMTD_FAST-NEXT: [[A_REAL:%.*]] = load double, ptr [[A_REALP]], align 8 // PRMTD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[A]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[A_IMAG:%.*]] = load double, ptr [[A_IMAGP]], align 8 -// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext double [[A_REAL]] to x86_fp80 -// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext double [[A_IMAG]] to x86_fp80 +// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn double [[A_REAL]] to x86_fp80 +// PRMTD_FAST-NEXT: [[EXT1:%.*]] = fpext reassoc nnan ninf nsz arcp afn double [[A_IMAG]] to x86_fp80 // PRMTD_FAST-NEXT: [[B_REALP:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[B]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[B_REAL:%.*]] = load double, ptr [[B_REALP]], align 8 // PRMTD_FAST-NEXT: [[B_IMAGP:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[B]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[B_IMAG:%.*]] = load double, ptr [[B_IMAGP]], align 8 -// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext double [[B_REAL]] to x86_fp80 -// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext double [[B_IMAG]] to x86_fp80 +// PRMTD_FAST-NEXT: [[EXT2:%.*]] = fpext reassoc nnan ninf nsz arcp afn double [[B_REAL]] to x86_fp80 +// PRMTD_FAST-NEXT: [[EXT3:%.*]] = fpext reassoc nnan ninf nsz arcp afn double [[B_IMAG]] to x86_fp80 // PRMTD_FAST-NEXT: [[TMP4:%.*]] = fmul reassoc nnan ninf nsz arcp afn x86_fp80 [[EXT]], [[EXT2]] // PRMTD_FAST-NEXT: [[TMP5:%.*]] = fmul reassoc nnan ninf nsz arcp afn x86_fp80 [[EXT1]], [[EXT3]] // PRMTD_FAST-NEXT: [[TMP6:%.*]] = fadd reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP4]], [[TMP5]] @@ -1549,8 +1549,8 @@ _Complex float mulf(_Complex float a, _Complex float b) { // PRMTD_FAST-NEXT: [[TMP12:%.*]] = fsub reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP10]], [[TMP11]] // PRMTD_FAST-NEXT: [[TMP13:%.*]] = fdiv reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP6]], [[TMP9]] // PRMTD_FAST-NEXT: [[TMP14:%.*]] = fdiv reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP12]], [[TMP9]] -// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc x86_fp80 [[TMP13]] to double -// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc x86_fp80 [[TMP14]] to double +// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP13]] to double +// PRMTD_FAST-NEXT: [[UNPROMOTION4:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP14]] to double // PRMTD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[RETVAL]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { double, double }, ptr [[RETVAL]], i32 0, i32 1 // PRMTD_FAST-NEXT: store double [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 8 @@ -3697,8 +3697,8 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // BASIC_FAST-NEXT: [[C_REAL:%.*]] = load float, ptr [[C_REALP]], align 4 // BASIC_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[C]], i32 0, i32 1 // BASIC_FAST-NEXT: [[C_IMAG:%.*]] = load float, ptr [[C_IMAGP]], align 4 -// BASIC_FAST-NEXT: [[CONV:%.*]] = fpext float [[C_REAL]] to x86_fp80 -// BASIC_FAST-NEXT: [[CONV1:%.*]] = fpext float [[C_IMAG]] to x86_fp80 +// BASIC_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_REAL]] to x86_fp80 +// BASIC_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_IMAG]] to x86_fp80 // BASIC_FAST-NEXT: [[TMP0:%.*]] = fmul reassoc nnan ninf nsz arcp afn x86_fp80 [[B_REAL]], [[CONV]] // BASIC_FAST-NEXT: [[TMP1:%.*]] = fmul reassoc nnan ninf nsz arcp afn x86_fp80 [[B_IMAG]], [[CONV1]] // BASIC_FAST-NEXT: [[TMP2:%.*]] = fadd reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP0]], [[TMP1]] @@ -3710,8 +3710,8 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // BASIC_FAST-NEXT: [[TMP8:%.*]] = fsub reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP6]], [[TMP7]] // BASIC_FAST-NEXT: [[TMP9:%.*]] = fdiv reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP2]], [[TMP5]] // BASIC_FAST-NEXT: [[TMP10:%.*]] = fdiv reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP8]], [[TMP5]] -// BASIC_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP9]] to float -// BASIC_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP10]] to float +// BASIC_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP9]] to float +// BASIC_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP10]] to float // BASIC_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 0 // BASIC_FAST-NEXT: [[A_REAL:%.*]] = load float, ptr [[A_REALP]], align 4 // BASIC_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 1 @@ -3751,13 +3751,13 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // FULL_FAST-NEXT: [[C_REAL:%.*]] = load float, ptr [[C_REALP]], align 4 // FULL_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[C]], i32 0, i32 1 // FULL_FAST-NEXT: [[C_IMAG:%.*]] = load float, ptr [[C_IMAGP]], align 4 -// FULL_FAST-NEXT: [[CONV:%.*]] = fpext float [[C_REAL]] to x86_fp80 -// FULL_FAST-NEXT: [[CONV1:%.*]] = fpext float [[C_IMAG]] to x86_fp80 +// FULL_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_REAL]] to x86_fp80 +// FULL_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_IMAG]] to x86_fp80 // FULL_FAST-NEXT: [[CALL:%.*]] = call reassoc nnan ninf nsz arcp afn nofpclass(nan inf) { x86_fp80, x86_fp80 } @__divxc3(x86_fp80 noundef nofpclass(nan inf) [[B_REAL]], x86_fp80 noundef nofpclass(nan inf) [[B_IMAG]], x86_fp80 noundef nofpclass(nan inf) [[CONV]], x86_fp80 noundef nofpclass(nan inf) [[CONV1]]) #[[ATTR2]] // FULL_FAST-NEXT: [[TMP0:%.*]] = extractvalue { x86_fp80, x86_fp80 } [[CALL]], 0 // FULL_FAST-NEXT: [[TMP1:%.*]] = extractvalue { x86_fp80, x86_fp80 } [[CALL]], 1 -// FULL_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP0]] to float -// FULL_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP1]] to float +// FULL_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP0]] to float +// FULL_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP1]] to float // FULL_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 0 // FULL_FAST-NEXT: [[A_REAL:%.*]] = load float, ptr [[A_REALP]], align 4 // FULL_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 1 @@ -3791,8 +3791,8 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // IMPRVD_FAST-NEXT: [[C_REAL:%.*]] = load float, ptr [[C_REALP]], align 4 // IMPRVD_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[C]], i32 0, i32 1 // IMPRVD_FAST-NEXT: [[C_IMAG:%.*]] = load float, ptr [[C_IMAGP]], align 4 -// IMPRVD_FAST-NEXT: [[CONV:%.*]] = fpext float [[C_REAL]] to x86_fp80 -// IMPRVD_FAST-NEXT: [[CONV1:%.*]] = fpext float [[C_IMAG]] to x86_fp80 +// IMPRVD_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_REAL]] to x86_fp80 +// IMPRVD_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_IMAG]] to x86_fp80 // IMPRVD_FAST-NEXT: [[TMP0:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV]]) // IMPRVD_FAST-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV1]]) // IMPRVD_FAST-NEXT: [[ABS_CMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn ugt x86_fp80 [[TMP0]], [[TMP1]] @@ -3822,8 +3822,8 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // IMPRVD_FAST: complex_div: // IMPRVD_FAST-NEXT: [[TMP20:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP7]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP16]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] // IMPRVD_FAST-NEXT: [[TMP21:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP10]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP19]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] -// IMPRVD_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP20]] to float -// IMPRVD_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP21]] to float +// IMPRVD_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP20]] to float +// IMPRVD_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP21]] to float // IMPRVD_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 0 // IMPRVD_FAST-NEXT: [[A_REAL:%.*]] = load float, ptr [[A_REALP]], align 4 // IMPRVD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 1 @@ -3880,8 +3880,8 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // PRMTD_FAST-NEXT: [[C_REAL:%.*]] = load float, ptr [[C_REALP]], align 4 // PRMTD_FAST-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[C]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[C_IMAG:%.*]] = load float, ptr [[C_IMAGP]], align 4 -// PRMTD_FAST-NEXT: [[CONV:%.*]] = fpext float [[C_REAL]] to x86_fp80 -// PRMTD_FAST-NEXT: [[CONV1:%.*]] = fpext float [[C_IMAG]] to x86_fp80 +// PRMTD_FAST-NEXT: [[CONV:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_REAL]] to x86_fp80 +// PRMTD_FAST-NEXT: [[CONV1:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[C_IMAG]] to x86_fp80 // PRMTD_FAST-NEXT: [[TMP0:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV]]) // PRMTD_FAST-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn x86_fp80 @llvm.fabs.f80(x86_fp80 [[CONV1]]) // PRMTD_FAST-NEXT: [[ABS_CMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn ugt x86_fp80 [[TMP0]], [[TMP1]] @@ -3911,16 +3911,16 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // PRMTD_FAST: complex_div: // PRMTD_FAST-NEXT: [[TMP20:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP7]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP16]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] // PRMTD_FAST-NEXT: [[TMP21:%.*]] = phi reassoc nnan ninf nsz arcp afn x86_fp80 [ [[TMP10]], [[ABS_RHSR_GREATER_OR_EQUAL_ABS_RHSI]] ], [ [[TMP19]], [[ABS_RHSR_LESS_THAN_ABS_RHSI]] ] -// PRMTD_FAST-NEXT: [[CONV2:%.*]] = fptrunc x86_fp80 [[TMP20]] to float -// PRMTD_FAST-NEXT: [[CONV3:%.*]] = fptrunc x86_fp80 [[TMP21]] to float -// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext float [[CONV2]] to double -// PRMTD_FAST-NEXT: [[EXT4:%.*]] = fpext float [[CONV3]] to double +// PRMTD_FAST-NEXT: [[CONV2:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP20]] to float +// PRMTD_FAST-NEXT: [[CONV3:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn x86_fp80 [[TMP21]] to float +// PRMTD_FAST-NEXT: [[EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[CONV2]] to double +// PRMTD_FAST-NEXT: [[EXT4:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[CONV3]] to double // PRMTD_FAST-NEXT: [[A_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[A_REAL:%.*]] = load float, ptr [[A_REALP]], align 4 // PRMTD_FAST-NEXT: [[A_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[A]], i32 0, i32 1 // PRMTD_FAST-NEXT: [[A_IMAG:%.*]] = load float, ptr [[A_IMAGP]], align 4 -// PRMTD_FAST-NEXT: [[EXT5:%.*]] = fpext float [[A_REAL]] to double -// PRMTD_FAST-NEXT: [[EXT6:%.*]] = fpext float [[A_IMAG]] to double +// PRMTD_FAST-NEXT: [[EXT5:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[A_REAL]] to double +// PRMTD_FAST-NEXT: [[EXT6:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[A_IMAG]] to double // PRMTD_FAST-NEXT: [[TMP22:%.*]] = fmul reassoc nnan ninf nsz arcp afn double [[EXT]], [[EXT5]] // PRMTD_FAST-NEXT: [[TMP23:%.*]] = fmul reassoc nnan ninf nsz arcp afn double [[EXT4]], [[EXT6]] // PRMTD_FAST-NEXT: [[TMP24:%.*]] = fadd reassoc nnan ninf nsz arcp afn double [[TMP22]], [[TMP23]] @@ -3932,8 +3932,8 @@ _Complex long double mulld(_Complex long double a, _Complex long double b) { // PRMTD_FAST-NEXT: [[TMP30:%.*]] = fsub reassoc nnan ninf nsz arcp afn double [[TMP28]], [[TMP29]] // PRMTD_FAST-NEXT: [[TMP31:%.*]] = fdiv reassoc nnan ninf nsz arcp afn double [[TMP24]], [[TMP27]] // PRMTD_FAST-NEXT: [[TMP32:%.*]] = fdiv reassoc nnan ninf nsz arcp afn double [[TMP30]], [[TMP27]] -// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc double [[TMP31]] to float -// PRMTD_FAST-NEXT: [[UNPROMOTION7:%.*]] = fptrunc double [[TMP32]] to float +// PRMTD_FAST-NEXT: [[UNPROMOTION:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn double [[TMP31]] to float +// PRMTD_FAST-NEXT: [[UNPROMOTION7:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn double [[TMP32]] to float // PRMTD_FAST-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[RETVAL]], i32 0, i32 0 // PRMTD_FAST-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { float, float }, ptr [[RETVAL]], i32 0, i32 1 // PRMTD_FAST-NEXT: store float [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 4 diff --git a/clang/test/CodeGen/matrix-type-operators-fast-math.c b/clang/test/CodeGen/matrix-type-operators-fast-math.c index 724b282830286..a5cb2ffdabcc5 100644 --- a/clang/test/CodeGen/matrix-type-operators-fast-math.c +++ b/clang/test/CodeGen/matrix-type-operators-fast-math.c @@ -41,7 +41,7 @@ void add_matrix_scalar_double_float(dx5x5_t a, float vf) { // CHECK-LABEL: define{{.*}} void @add_matrix_scalar_double_float(<25 x double> noundef nofpclass(nan inf) %a, float noundef nofpclass(nan inf) %vf) // CHECK: [[MATRIX:%.*]] = load <25 x double>, ptr {{.*}}, align 8 // CHECK-NEXT: [[SCALAR:%.*]] = load float, ptr %vf.addr, align 4 - // CHECK-NEXT: [[SCALAR_EXT:%.*]] = fpext float [[SCALAR]] to double + // CHECK-NEXT: [[SCALAR_EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[SCALAR]] to double // CHECK-NEXT: [[SCALAR_EMBED:%.*]] = insertelement <25 x double> poison, double [[SCALAR_EXT]], i64 0 // CHECK-NEXT: [[SCALAR_EMBED1:%.*]] = shufflevector <25 x double> [[SCALAR_EMBED]], <25 x double> poison, <25 x i32> zeroinitializer // CHECK-NEXT: [[RES:%.*]] = fadd reassoc nnan ninf nsz arcp afn <25 x double> [[MATRIX]], [[SCALAR_EMBED1]] @@ -53,7 +53,7 @@ void add_matrix_scalar_double_float(dx5x5_t a, float vf) { void add_compound_matrix_scalar_double_float(dx5x5_t a, float vf) { // CHECK-LABEL: define{{.*}} void @add_compound_matrix_scalar_double_float(<25 x double> noundef nofpclass(nan inf) %a, float noundef nofpclass(nan inf) %vf) // CHECK: [[SCALAR:%.*]] = load float, ptr %vf.addr, align 4 - // CHECK-NEXT: [[SCALAR_EXT:%.*]] = fpext float [[SCALAR]] to double + // CHECK-NEXT: [[SCALAR_EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[SCALAR]] to double // CHECK-NEXT: [[MATRIX:%.*]] = load <25 x double>, ptr {{.*}}, align 8 // CHECK-NEXT: [[SCALAR_EMBED:%.*]] = insertelement <25 x double> poison, double [[SCALAR_EXT]], i64 0 // CHECK-NEXT: [[SCALAR_EMBED1:%.*]] = shufflevector <25 x double> [[SCALAR_EMBED]], <25 x double> poison, <25 x i32> zeroinitializer @@ -66,7 +66,7 @@ void add_compound_matrix_scalar_double_float(dx5x5_t a, float vf) { void subtract_compound_matrix_scalar_double_float(dx5x5_t a, float vf) { // CHECK-LABEL: define{{.*}} void @subtract_compound_matrix_scalar_double_float(<25 x double> noundef nofpclass(nan inf) %a, float noundef nofpclass(nan inf) %vf) // CHECK: [[SCALAR:%.*]] = load float, ptr %vf.addr, align 4 - // CHECK-NEXT: [[SCALAR_EXT:%.*]] = fpext float [[SCALAR]] to double + // CHECK-NEXT: [[SCALAR_EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[SCALAR]] to double // CHECK-NEXT: [[MATRIX:%.*]] = load <25 x double>, ptr {{.*}}, align 8 // CHECK-NEXT: [[SCALAR_EMBED:%.*]] = insertelement <25 x double> poison, double [[SCALAR_EXT]], i64 0 // CHECK-NEXT: [[SCALAR_EMBED1:%.*]] = shufflevector <25 x double> [[SCALAR_EMBED]], <25 x double> poison, <25 x i32> zeroinitializer @@ -104,7 +104,7 @@ void multiply_compound_matrix_matrix_double(dx5x5_t b, dx5x5_t c) { // CHECK-LABEL: @multiply_double_matrix_scalar_float( // CHECK: [[A:%.*]] = load <25 x double>, ptr {{.*}}, align 8 // CHECK-NEXT: [[S:%.*]] = load float, ptr %s.addr, align 4 -// CHECK-NEXT: [[S_EXT:%.*]] = fpext float [[S]] to double +// CHECK-NEXT: [[S_EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[S]] to double // CHECK-NEXT: [[VECINSERT:%.*]] = insertelement <25 x double> poison, double [[S_EXT]], i64 0 // CHECK-NEXT: [[VECSPLAT:%.*]] = shufflevector <25 x double> [[VECINSERT]], <25 x double> poison, <25 x i32> zeroinitializer // CHECK-NEXT: [[RES:%.*]] = fmul reassoc nnan ninf nsz arcp afn <25 x double> [[A]], [[VECSPLAT]] @@ -117,7 +117,7 @@ void multiply_double_matrix_scalar_float(dx5x5_t a, float s) { // CHECK-LABEL: @multiply_compound_double_matrix_scalar_float // CHECK: [[S:%.*]] = load float, ptr %s.addr, align 4 -// CHECK-NEXT: [[S_EXT:%.*]] = fpext float [[S]] to double +// CHECK-NEXT: [[S_EXT:%.*]] = fpext reassoc nnan ninf nsz arcp afn float [[S]] to double // CHECK-NEXT: [[A:%.*]] = load <25 x double>, ptr {{.*}}, align 8 // CHECK-NEXT: [[VECINSERT:%.*]] = insertelement <25 x double> poison, double [[S_EXT]], i64 0 // CHECK-NEXT: [[VECSPLAT:%.*]] = shufflevector <25 x double> [[VECINSERT]], <25 x double> poison, <25 x i32> zeroinitializer @@ -132,7 +132,7 @@ void multiply_compound_double_matrix_scalar_float(dx5x5_t a, float s) { // CHECK-LABEL: @divide_float_matrix_scalar_double( // CHECK: [[MAT:%.*]] = load <6 x float>, ptr [[MAT_ADDR:%.*]], align 4 // CHECK-NEXT: [[S:%.*]] = load double, ptr %s.addr, align 8 -// CHECK-NEXT: [[S_TRUNC:%.*]] = fptrunc double [[S]] to float +// CHECK-NEXT: [[S_TRUNC:%.*]] = fptrunc reassoc nnan ninf nsz arcp afn double [[S]] to float // CHECK-NEXT: [[VECINSERT:%.*]] = insertelement <6 x float> poison, float [[S_TRUNC]], i64 0 // CHECK-NEXT: [[VECSPLAT:%.*]] = shufflevector <6 x float> [[VECINSERT]], <6 x float> poison, <6 x i32> zeroinitializer // CHECK-NEXT: [[RES:%.*]] = fdiv reassoc nnan ninf nsz arcp afn <6 x float> [[MAT]], [[VECSPLAT]] diff --git a/clang/test/CodeGen/nofpclass.c b/clang/test/CodeGen/nofpclass.c index d9b34c8e383f9..75aa0318421de 100644 --- a/clang/test/CodeGen/nofpclass.c +++ b/clang/test/CodeGen/nofpclass.c @@ -679,14 +679,14 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // CFINITEONLY-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // CFINITEONLY-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // CFINITEONLY-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// CFINITEONLY-NEXT: [[EXT:%.*]] = fpext half [[C_REAL]] to float -// CFINITEONLY-NEXT: [[EXT1:%.*]] = fpext half [[C_IMAG]] to float +// CFINITEONLY-NEXT: [[EXT:%.*]] = fpext nnan ninf half [[C_REAL]] to float +// CFINITEONLY-NEXT: [[EXT1:%.*]] = fpext nnan ninf half [[C_IMAG]] to float // CFINITEONLY-NEXT: [[C_REALP2:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 0 // CFINITEONLY-NEXT: [[C_REAL3:%.*]] = load half, ptr [[C_REALP2]], align 2 // CFINITEONLY-NEXT: [[C_IMAGP4:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // CFINITEONLY-NEXT: [[C_IMAG5:%.*]] = load half, ptr [[C_IMAGP4]], align 2 -// CFINITEONLY-NEXT: [[EXT6:%.*]] = fpext half [[C_REAL3]] to float -// CFINITEONLY-NEXT: [[EXT7:%.*]] = fpext half [[C_IMAG5]] to float +// CFINITEONLY-NEXT: [[EXT6:%.*]] = fpext nnan ninf half [[C_REAL3]] to float +// CFINITEONLY-NEXT: [[EXT7:%.*]] = fpext nnan ninf half [[C_IMAG5]] to float // CFINITEONLY-NEXT: [[MUL_AC:%.*]] = fmul nnan ninf float [[EXT]], [[EXT6]] // CFINITEONLY-NEXT: [[MUL_BD:%.*]] = fmul nnan ninf float [[EXT1]], [[EXT7]] // CFINITEONLY-NEXT: [[MUL_AD:%.*]] = fmul nnan ninf float [[EXT]], [[EXT7]] @@ -709,8 +709,8 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // CFINITEONLY: complex_mul_cont: // CFINITEONLY-NEXT: [[REAL_MUL_PHI:%.*]] = phi nnan ninf float [ [[MUL_R]], [[ENTRY:%.*]] ], [ [[MUL_R]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_REAL]], [[COMPLEX_MUL_LIBCALL]] ] // CFINITEONLY-NEXT: [[IMAG_MUL_PHI:%.*]] = phi nnan ninf float [ [[MUL_I]], [[ENTRY]] ], [ [[MUL_I]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_IMAG]], [[COMPLEX_MUL_LIBCALL]] ] -// CFINITEONLY-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[REAL_MUL_PHI]] to half -// CFINITEONLY-NEXT: [[UNPROMOTION9:%.*]] = fptrunc float [[IMAG_MUL_PHI]] to half +// CFINITEONLY-NEXT: [[UNPROMOTION:%.*]] = fptrunc nnan ninf float [[REAL_MUL_PHI]] to half +// CFINITEONLY-NEXT: [[UNPROMOTION9:%.*]] = fptrunc nnan ninf float [[IMAG_MUL_PHI]] to half // CFINITEONLY-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // CFINITEONLY-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // CFINITEONLY-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -723,16 +723,16 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // CLFINITEONLY-SAME: (<2 x half> noundef nofpclass(nan inf) [[C_COERCE:%.*]]) local_unnamed_addr #[[ATTR7:[0-9]+]] { // CLFINITEONLY-NEXT: entry: // CLFINITEONLY-NEXT: [[C_SROA_0_0_VEC_EXTRACT:%.*]] = extractelement <2 x half> [[C_COERCE]], i64 0 -// CLFINITEONLY-NEXT: [[EXT:%.*]] = fpext half [[C_SROA_0_0_VEC_EXTRACT]] to float +// CLFINITEONLY-NEXT: [[EXT:%.*]] = fpext nnan ninf half [[C_SROA_0_0_VEC_EXTRACT]] to float // CLFINITEONLY-NEXT: [[C_SROA_0_2_VEC_EXTRACT:%.*]] = extractelement <2 x half> [[C_COERCE]], i64 1 -// CLFINITEONLY-NEXT: [[EXT1:%.*]] = fpext half [[C_SROA_0_2_VEC_EXTRACT]] to float +// CLFINITEONLY-NEXT: [[EXT1:%.*]] = fpext nnan ninf half [[C_SROA_0_2_VEC_EXTRACT]] to float // CLFINITEONLY-NEXT: [[MUL_AD:%.*]] = fmul nnan ninf float [[EXT]], [[EXT1]] // CLFINITEONLY-NEXT: [[MUL_I:%.*]] = fadd nnan ninf float [[MUL_AD]], [[MUL_AD]] // CLFINITEONLY-NEXT: [[MUL_AC:%.*]] = fmul nnan ninf float [[EXT]], [[EXT]] // CLFINITEONLY-NEXT: [[MUL_BD:%.*]] = fmul nnan ninf float [[EXT1]], [[EXT1]] // CLFINITEONLY-NEXT: [[MUL_R:%.*]] = fsub nnan ninf float [[MUL_AC]], [[MUL_BD]] -// CLFINITEONLY-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[MUL_R]] to half -// CLFINITEONLY-NEXT: [[UNPROMOTION9:%.*]] = fptrunc float [[MUL_I]] to half +// CLFINITEONLY-NEXT: [[UNPROMOTION:%.*]] = fptrunc nnan ninf float [[MUL_R]] to half +// CLFINITEONLY-NEXT: [[UNPROMOTION9:%.*]] = fptrunc nnan ninf float [[MUL_I]] to half // CLFINITEONLY-NEXT: [[RETVAL_SROA_0_0_VEC_INSERT:%.*]] = insertelement <2 x half> poison, half [[UNPROMOTION]], i64 0 // CLFINITEONLY-NEXT: [[RETVAL_SROA_0_2_VEC_INSERT:%.*]] = insertelement <2 x half> [[RETVAL_SROA_0_0_VEC_INSERT]], half [[UNPROMOTION9]], i64 1 // CLFINITEONLY-NEXT: ret <2 x half> [[RETVAL_SROA_0_2_VEC_INSERT]] @@ -749,14 +749,14 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // NONANS-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // NONANS-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // NONANS-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// NONANS-NEXT: [[EXT:%.*]] = fpext half [[C_REAL]] to float -// NONANS-NEXT: [[EXT1:%.*]] = fpext half [[C_IMAG]] to float +// NONANS-NEXT: [[EXT:%.*]] = fpext nnan half [[C_REAL]] to float +// NONANS-NEXT: [[EXT1:%.*]] = fpext nnan half [[C_IMAG]] to float // NONANS-NEXT: [[C_REALP2:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 0 // NONANS-NEXT: [[C_REAL3:%.*]] = load half, ptr [[C_REALP2]], align 2 // NONANS-NEXT: [[C_IMAGP4:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // NONANS-NEXT: [[C_IMAG5:%.*]] = load half, ptr [[C_IMAGP4]], align 2 -// NONANS-NEXT: [[EXT6:%.*]] = fpext half [[C_REAL3]] to float -// NONANS-NEXT: [[EXT7:%.*]] = fpext half [[C_IMAG5]] to float +// NONANS-NEXT: [[EXT6:%.*]] = fpext nnan half [[C_REAL3]] to float +// NONANS-NEXT: [[EXT7:%.*]] = fpext nnan half [[C_IMAG5]] to float // NONANS-NEXT: [[MUL_AC:%.*]] = fmul nnan float [[EXT]], [[EXT6]] // NONANS-NEXT: [[MUL_BD:%.*]] = fmul nnan float [[EXT1]], [[EXT7]] // NONANS-NEXT: [[MUL_AD:%.*]] = fmul nnan float [[EXT]], [[EXT7]] @@ -779,8 +779,8 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // NONANS: complex_mul_cont: // NONANS-NEXT: [[REAL_MUL_PHI:%.*]] = phi nnan float [ [[MUL_R]], [[ENTRY:%.*]] ], [ [[MUL_R]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_REAL]], [[COMPLEX_MUL_LIBCALL]] ] // NONANS-NEXT: [[IMAG_MUL_PHI:%.*]] = phi nnan float [ [[MUL_I]], [[ENTRY]] ], [ [[MUL_I]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_IMAG]], [[COMPLEX_MUL_LIBCALL]] ] -// NONANS-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[REAL_MUL_PHI]] to half -// NONANS-NEXT: [[UNPROMOTION9:%.*]] = fptrunc float [[IMAG_MUL_PHI]] to half +// NONANS-NEXT: [[UNPROMOTION:%.*]] = fptrunc nnan float [[REAL_MUL_PHI]] to half +// NONANS-NEXT: [[UNPROMOTION9:%.*]] = fptrunc nnan float [[IMAG_MUL_PHI]] to half // NONANS-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // NONANS-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // NONANS-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -800,14 +800,14 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // NOINFS-NEXT: [[C_REAL:%.*]] = load half, ptr [[C_REALP]], align 2 // NOINFS-NEXT: [[C_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // NOINFS-NEXT: [[C_IMAG:%.*]] = load half, ptr [[C_IMAGP]], align 2 -// NOINFS-NEXT: [[EXT:%.*]] = fpext half [[C_REAL]] to float -// NOINFS-NEXT: [[EXT1:%.*]] = fpext half [[C_IMAG]] to float +// NOINFS-NEXT: [[EXT:%.*]] = fpext ninf half [[C_REAL]] to float +// NOINFS-NEXT: [[EXT1:%.*]] = fpext ninf half [[C_IMAG]] to float // NOINFS-NEXT: [[C_REALP2:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 0 // NOINFS-NEXT: [[C_REAL3:%.*]] = load half, ptr [[C_REALP2]], align 2 // NOINFS-NEXT: [[C_IMAGP4:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[C]], i32 0, i32 1 // NOINFS-NEXT: [[C_IMAG5:%.*]] = load half, ptr [[C_IMAGP4]], align 2 -// NOINFS-NEXT: [[EXT6:%.*]] = fpext half [[C_REAL3]] to float -// NOINFS-NEXT: [[EXT7:%.*]] = fpext half [[C_IMAG5]] to float +// NOINFS-NEXT: [[EXT6:%.*]] = fpext ninf half [[C_REAL3]] to float +// NOINFS-NEXT: [[EXT7:%.*]] = fpext ninf half [[C_IMAG5]] to float // NOINFS-NEXT: [[MUL_AC:%.*]] = fmul ninf float [[EXT]], [[EXT6]] // NOINFS-NEXT: [[MUL_BD:%.*]] = fmul ninf float [[EXT1]], [[EXT7]] // NOINFS-NEXT: [[MUL_AD:%.*]] = fmul ninf float [[EXT]], [[EXT7]] @@ -830,8 +830,8 @@ _Complex double defined_complex_func_f64_ret(_Complex double c) { // NOINFS: complex_mul_cont: // NOINFS-NEXT: [[REAL_MUL_PHI:%.*]] = phi ninf float [ [[MUL_R]], [[ENTRY:%.*]] ], [ [[MUL_R]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_REAL]], [[COMPLEX_MUL_LIBCALL]] ] // NOINFS-NEXT: [[IMAG_MUL_PHI:%.*]] = phi ninf float [ [[MUL_I]], [[ENTRY]] ], [ [[MUL_I]], [[COMPLEX_MUL_IMAG_NAN]] ], [ [[COERCE_IMAG]], [[COMPLEX_MUL_LIBCALL]] ] -// NOINFS-NEXT: [[UNPROMOTION:%.*]] = fptrunc float [[REAL_MUL_PHI]] to half -// NOINFS-NEXT: [[UNPROMOTION9:%.*]] = fptrunc float [[IMAG_MUL_PHI]] to half +// NOINFS-NEXT: [[UNPROMOTION:%.*]] = fptrunc ninf float [[REAL_MUL_PHI]] to half +// NOINFS-NEXT: [[UNPROMOTION9:%.*]] = fptrunc ninf float [[IMAG_MUL_PHI]] to half // NOINFS-NEXT: [[RETVAL_REALP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 0 // NOINFS-NEXT: [[RETVAL_IMAGP:%.*]] = getelementptr inbounds nuw { half, half }, ptr [[RETVAL]], i32 0, i32 1 // NOINFS-NEXT: store half [[UNPROMOTION]], ptr [[RETVAL_REALP]], align 2 @@ -879,7 +879,7 @@ _Complex _Float16 defined_complex_func_f16_ret(_Complex _Float16 c) { // CFINITEONLY-NEXT: store <2 x half> [[V2F162]], ptr [[V2F16_ADDR]], align 4 // CFINITEONLY-NEXT: [[TMP2:%.*]] = load float, ptr [[F32_ADDR]], align 4 // CFINITEONLY-NEXT: [[TMP3:%.*]] = load float, ptr [[F32_ADDR]], align 4 -// CFINITEONLY-NEXT: [[CONV:%.*]] = fpext float [[TMP3]] to double +// CFINITEONLY-NEXT: [[CONV:%.*]] = fpext nnan ninf float [[TMP3]] to double // CFINITEONLY-NEXT: [[TMP4:%.*]] = load double, ptr [[F64_ADDR]], align 8 // CFINITEONLY-NEXT: [[TMP5:%.*]] = load half, ptr [[F16_ADDR]], align 2 // CFINITEONLY-NEXT: [[TMP6:%.*]] = load <2 x float>, ptr [[V2F32_ADDR]], align 8 @@ -923,7 +923,7 @@ _Complex _Float16 defined_complex_func_f16_ret(_Complex _Float16 c) { // CLFINITEONLY-SAME: (float noundef nofpclass(nan inf) [[F32:%.*]], double noundef nofpclass(nan inf) [[F64:%.*]], half noundef nofpclass(nan inf) [[F16:%.*]], double noundef nofpclass(nan inf) [[V2F32_COERCE:%.*]], <2 x double> noundef nofpclass(nan inf) [[V2F64:%.*]], i32 noundef [[V2F16_COERCE:%.*]], <2 x float> noundef nofpclass(nan inf) [[CF32_COERCE:%.*]], double noundef nofpclass(nan inf) [[CF64_COERCE0:%.*]], double noundef nofpclass(nan inf) [[CF64_COERCE1:%.*]], ptr nocapture noundef readonly byval({ half, half }) align 8 [[CF16:%.*]]) local_unnamed_addr #[[ATTR5]] { // CLFINITEONLY-NEXT: entry: // CLFINITEONLY-NEXT: [[BYVAL_TEMP:%.*]] = alloca { double, double }, align 8 -// CLFINITEONLY-NEXT: [[CONV:%.*]] = fpext float [[F32]] to double +// CLFINITEONLY-NEXT: [[CONV:%.*]] = fpext nnan ninf float [[F32]] to double // CLFINITEONLY-NEXT: [[CF16_REAL:%.*]] = load half, ptr [[CF16]], align 8 // CLFINITEONLY-NEXT: [[CF16_IMAGP:%.*]] = getelementptr inbounds nuw i8, ptr [[CF16]], i64 2 // CLFINITEONLY-NEXT: [[CF16_IMAG:%.*]] = load half, ptr [[CF16_IMAGP]], align 2 @@ -973,7 +973,7 @@ _Complex _Float16 defined_complex_func_f16_ret(_Complex _Float16 c) { // NONANS-NEXT: store <2 x half> [[V2F162]], ptr [[V2F16_ADDR]], align 4 // NONANS-NEXT: [[TMP2:%.*]] = load float, ptr [[F32_ADDR]], align 4 // NONANS-NEXT: [[TMP3:%.*]] = load float, ptr [[F32_ADDR]], align 4 -// NONANS-NEXT: [[CONV:%.*]] = fpext float [[TMP3]] to double +// NONANS-NEXT: [[CONV:%.*]] = fpext nnan float [[TMP3]] to double // NONANS-NEXT: [[TMP4:%.*]] = load double, ptr [[F64_ADDR]], align 8 // NONANS-NEXT: [[TMP5:%.*]] = load half, ptr [[F16_ADDR]], align 2 // NONANS-NEXT: [[TMP6:%.*]] = load <2 x float>, ptr [[V2F32_ADDR]], align 8 @@ -1048,7 +1048,7 @@ _Complex _Float16 defined_complex_func_f16_ret(_Complex _Float16 c) { // NOINFS-NEXT: store <2 x half> [[V2F162]], ptr [[V2F16_ADDR]], align 4 // NOINFS-NEXT: [[TMP2:%.*]] = load float, ptr [[F32_ADDR]], align 4 // NOINFS-NEXT: [[TMP3:%.*]] = load float, ptr [[F32_ADDR]], align 4 -// NOINFS-NEXT: [[CONV:%.*]] = fpext float [[TMP3]] to double +// NOINFS-NEXT: [[CONV:%.*]] = fpext ninf float [[TMP3]] to double // NOINFS-NEXT: [[TMP4:%.*]] = load double, ptr [[F64_ADDR]], align 8 // NOINFS-NEXT: [[TMP5:%.*]] = load half, ptr [[F16_ADDR]], align 2 // NOINFS-NEXT: [[TMP6:%.*]] = load <2 x float>, ptr [[V2F32_ADDR]], align 8 @@ -1132,7 +1132,7 @@ float call_variadic(float f32, double f64, _Float16 f16, // CFINITEONLY-NEXT: [[TMP2:%.*]] = load ptr, ptr [[FPTR_ADDR]], align 8 // CFINITEONLY-NEXT: [[TMP3:%.*]] = load float, ptr [[F32_ADDR]], align 4 // CFINITEONLY-NEXT: [[TMP4:%.*]] = load float, ptr [[F32_ADDR]], align 4 -// CFINITEONLY-NEXT: [[CONV:%.*]] = fpext float [[TMP4]] to double +// CFINITEONLY-NEXT: [[CONV:%.*]] = fpext nnan ninf float [[TMP4]] to double // CFINITEONLY-NEXT: [[TMP5:%.*]] = load double, ptr [[F64_ADDR]], align 8 // CFINITEONLY-NEXT: [[TMP6:%.*]] = load half, ptr [[F16_ADDR]], align 2 // CFINITEONLY-NEXT: [[TMP7:%.*]] = load <2 x float>, ptr [[V2F32_ADDR]], align 8 @@ -1176,7 +1176,7 @@ float call_variadic(float f32, double f64, _Float16 f16, // CLFINITEONLY-SAME: (ptr nocapture noundef readonly [[FPTR:%.*]], float noundef nofpclass(nan inf) [[F32:%.*]], double noundef nofpclass(nan inf) [[F64:%.*]], half noundef nofpclass(nan inf) [[F16:%.*]], double noundef nofpclass(nan inf) [[V2F32_COERCE:%.*]], <2 x double> noundef nofpclass(nan inf) [[V2F64:%.*]], i32 noundef [[V2F16_COERCE:%.*]], <2 x float> noundef nofpclass(nan inf) [[CF32_COERCE:%.*]], double noundef nofpclass(nan inf) [[CF64_COERCE0:%.*]], double noundef nofpclass(nan inf) [[CF64_COERCE1:%.*]], ptr nocapture noundef readonly byval({ half, half }) align 8 [[CF16:%.*]]) local_unnamed_addr #[[ATTR5]] { // CLFINITEONLY-NEXT: entry: // CLFINITEONLY-NEXT: [[BYVAL_TEMP:%.*]] = alloca { double, double }, align 8 -// CLFINITEONLY-NEXT: [[CONV:%.*]] = fpext float [[F32]] to double +// CLFINITEONLY-NEXT: [[CONV:%.*]] = fpext nnan ninf float [[F32]] to double // CLFINITEONLY-NEXT: [[CF16_REAL:%.*]] = load half, ptr [[CF16]], align 8 // CLFINITEONLY-NEXT: [[CF16_IMAGP:%.*]] = getelementptr inbounds nuw i8, ptr [[CF16]], i64 2 // CLFINITEONLY-NEXT: [[CF16_IMAG:%.*]] = load half, ptr [[CF16_IMAGP]], align 2 @@ -1229,7 +1229,7 @@ float call_variadic(float f32, double f64, _Float16 f16, // NONANS-NEXT: [[TMP2:%.*]] = load ptr, ptr [[FPTR_ADDR]], align 8 // NONANS-NEXT: [[TMP3:%.*]] = load float, ptr [[F32_ADDR]], align 4 // NONANS-NEXT: [[TMP4:%.*]] = load float, ptr [[F32_ADDR]], align 4 -// NONANS-NEXT: [[CONV:%.*]] = fpext float [[TMP4]] to double +// NONANS-NEXT: [[CONV:%.*]] = fpext nnan float [[TMP4]] to double // NONANS-NEXT: [[TMP5:%.*]] = load double, ptr [[F64_ADDR]], align 8 // NONANS-NEXT: [[TMP6:%.*]] = load half, ptr [[F16_ADDR]], align 2 // NONANS-NEXT: [[TMP7:%.*]] = load <2 x float>, ptr [[V2F32_ADDR]], align 8 @@ -1307,7 +1307,7 @@ float call_variadic(float f32, double f64, _Float16 f16, // NOINFS-NEXT: [[TMP2:%.*]] = load ptr, ptr [[FPTR_ADDR]], align 8 // NOINFS-NEXT: [[TMP3:%.*]] = load float, ptr [[F32_ADDR]], align 4 // NOINFS-NEXT: [[TMP4:%.*]] = load float, ptr [[F32_ADDR]], align 4 -// NOINFS-NEXT: [[CONV:%.*]] = fpext float [[TMP4]] to double +// NOINFS-NEXT: [[CONV:%.*]] = fpext ninf float [[TMP4]] to double // NOINFS-NEXT: [[TMP5:%.*]] = load double, ptr [[F64_ADDR]], align 8 // NOINFS-NEXT: [[TMP6:%.*]] = load half, ptr [[F16_ADDR]], align 2 // NOINFS-NEXT: [[TMP7:%.*]] = load <2 x float>, ptr [[V2F32_ADDR]], align 8 diff --git a/clang/test/CodeGenCUDA/amdgpu-atomic-ops.cu b/clang/test/CodeGenCUDA/amdgpu-atomic-ops.cu index efe75be8488b3..0e5fe8fa35cf1 100644 --- a/clang/test/CodeGenCUDA/amdgpu-atomic-ops.cu +++ b/clang/test/CodeGenCUDA/amdgpu-atomic-ops.cu @@ -157,7 +157,7 @@ __global__ void ffp3(long double *p) { __device__ double ffp4(double *p, float f) { // CHECK-LABEL: @_Z4ffp4Pdf - // CHECK: fpext float {{.*}} to double + // CHECK: fpext contract float {{.*}} to double // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}} // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}} diff --git a/clang/test/CodeGenHIP/printf_nonhostcall.cpp b/clang/test/CodeGenHIP/printf_nonhostcall.cpp index 2c6d0ecac1e8a..1982eb864e2a4 100644 --- a/clang/test/CodeGenHIP/printf_nonhostcall.cpp +++ b/clang/test/CodeGenHIP/printf_nonhostcall.cpp @@ -263,7 +263,7 @@ __device__ _BitInt(128) Int128 = 45637; // CHECK-NEXT: [[CONV:%.*]] = zext i16 [[TMP1]] to i32 // CHECK-NEXT: [[TMP2:%.*]] = load i64, ptr addrspacecast (ptr addrspace(1) @n to ptr), align 8 // CHECK-NEXT: [[TMP3:%.*]] = load float, ptr addrspacecast (ptr addrspace(1) @f1 to ptr), align 4 -// CHECK-NEXT: [[CONV1:%.*]] = fpext float [[TMP3]] to double +// CHECK-NEXT: [[CONV1:%.*]] = fpext contract float [[TMP3]] to double // CHECK-NEXT: [[TMP4:%.*]] = load double, ptr addrspacecast (ptr addrspace(1) @f2 to ptr), align 8 // CHECK-NEXT: [[TMP5:%.*]] = load half, ptr addrspacecast (ptr addrspace(1) @f3 to ptr), align 2 // CHECK-NEXT: [[TMP6:%.*]] = load bfloat, ptr addrspacecast (ptr addrspace(1) @f4 to ptr), align 2 @@ -324,7 +324,7 @@ __device__ _BitInt(128) Int128 = 45637; // CHECK_CONSTRAINED-NEXT: [[CONV:%.*]] = zext i16 [[TMP1]] to i32 // CHECK_CONSTRAINED-NEXT: [[TMP2:%.*]] = load i64, ptr addrspacecast (ptr addrspace(1) @n to ptr), align 8 // CHECK_CONSTRAINED-NEXT: [[TMP3:%.*]] = load float, ptr addrspacecast (ptr addrspace(1) @f1 to ptr), align 4 -// CHECK_CONSTRAINED-NEXT: [[CONV1:%.*]] = fpext float [[TMP3]] to double +// CHECK_CONSTRAINED-NEXT: [[CONV1:%.*]] = fpext contract float [[TMP3]] to double // CHECK_CONSTRAINED-NEXT: [[TMP4:%.*]] = load double, ptr addrspacecast (ptr addrspace(1) @f2 to ptr), align 8 // CHECK_CONSTRAINED-NEXT: [[TMP5:%.*]] = load half, ptr addrspacecast (ptr addrspace(1) @f3 to ptr), align 2 // CHECK_CONSTRAINED-NEXT: [[TMP6:%.*]] = load bfloat, ptr addrspacecast (ptr addrspace(1) @f4 to ptr), align 2 diff --git a/clang/test/Headers/__clang_hip_math_ocml_rounded_ops.hip b/clang/test/Headers/__clang_hip_math_ocml_rounded_ops.hip index 9e30c2c9c2ccb..9bccb0f571643 100644 --- a/clang/test/Headers/__clang_hip_math_ocml_rounded_ops.hip +++ b/clang/test/Headers/__clang_hip_math_ocml_rounded_ops.hip @@ -297,9 +297,9 @@ extern "C" __device__ double test___dmul_rz(double x, double y) { // CHECK-LABEL: @test___drcp_rd( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_div_rtn_f64(double noundef 1.000000e+00, double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___drcp_rd(float x) { @@ -308,9 +308,9 @@ extern "C" __device__ float test___drcp_rd(float x) { // CHECK-LABEL: @test___drcp_rn( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_div_rte_f64(double noundef 1.000000e+00, double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___drcp_rn(float x) { @@ -319,9 +319,9 @@ extern "C" __device__ float test___drcp_rn(float x) { // CHECK-LABEL: @test___drcp_ru( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_div_rtp_f64(double noundef 1.000000e+00, double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___drcp_ru(float x) { @@ -330,9 +330,9 @@ extern "C" __device__ float test___drcp_ru(float x) { // CHECK-LABEL: @test___drcp_rz( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_div_rtz_f64(double noundef 1.000000e+00, double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___drcp_rz(float x) { @@ -341,9 +341,9 @@ extern "C" __device__ float test___drcp_rz(float x) { // CHECK-LABEL: @test___dsqrt_rd( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_sqrt_rtn_f64(double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___dsqrt_rd(float x) { @@ -352,9 +352,9 @@ extern "C" __device__ float test___dsqrt_rd(float x) { // CHECK-LABEL: @test___dsqrt_rn( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_sqrt_rte_f64(double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___dsqrt_rn(float x) { @@ -363,9 +363,9 @@ extern "C" __device__ float test___dsqrt_rn(float x) { // CHECK-LABEL: @test___dsqrt_ru( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_sqrt_rtp_f64(double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___dsqrt_ru(float x) { @@ -374,9 +374,9 @@ extern "C" __device__ float test___dsqrt_ru(float x) { // CHECK-LABEL: @test___dsqrt_rz( // CHECK-NEXT: entry: -// CHECK-NEXT: [[CONV:%.*]] = fpext float [[X:%.*]] to double +// CHECK-NEXT: [[CONV:%.*]] = fpext contract float [[X:%.*]] to double // CHECK-NEXT: [[CALL_I:%.*]] = tail call contract noundef double @__ocml_sqrt_rtz_f64(double noundef [[CONV]]) #[[ATTR3]] -// CHECK-NEXT: [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float +// CHECK-NEXT: [[CONV1:%.*]] = fptrunc contract double [[CALL_I]] to float // CHECK-NEXT: ret float [[CONV1]] // extern "C" __device__ float test___dsqrt_rz(float x) { diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index abfd2fdfb9de7..7e01331b20c57 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -3732,10 +3732,10 @@ Fast-Math Flags LLVM IR floating-point operations (:ref:`fneg `, :ref:`fadd `, :ref:`fsub `, :ref:`fmul `, :ref:`fdiv `, -:ref:`frem `, :ref:`fcmp `), and :ref:`phi `, -:ref:`select `, or :ref:`call ` instructions that return -floating-point types may use the following flags to enable otherwise unsafe -floating-point transformations. +:ref:`frem `, :ref:`fcmp `, :ref:`fptrunc `, +:ref:`fpext `), and :ref:`phi `, :ref:`select `, or +:ref:`call ` instructions that return floating-point types may use the +following flags to enable otherwise unsafe floating-point transformations. ``fast`` This flag is a shorthand for specifying all fast-math flags at once, and @@ -11833,6 +11833,8 @@ Example: %Y = sext i1 true to i32 ; yields i32:-1 %Z = sext <2 x i16> to <2 x i32> ; yields +.. _i_fptrunc: + '``fptrunc .. to``' Instruction ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -11841,7 +11843,7 @@ Syntax: :: - = fptrunc to ; yields ty2 + = fptrunc [fast-math flags]* to ; yields ty2 Overview: """"""""" @@ -11873,6 +11875,10 @@ the low order bits leads to an all-0 payload, this cannot be represented as a signaling NaN (it would represent an infinity instead), so in that case "Unchanged NaN propagation" is not possible. +This instruction can also take any number of :ref:`fast-math +flags `, which are optimization hints to enable otherwise +unsafe floating-point optimizations. + Example: """""""" @@ -11881,6 +11887,8 @@ Example: %X = fptrunc double 16777217.0 to float ; yields float:16777216.0 %Y = fptrunc double 1.0E+300 to half ; yields half:+infinity +.. _i_fpext: + '``fpext .. to``' Instruction ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -11889,7 +11897,7 @@ Syntax: :: - = fpext to ; yields ty2 + = fpext [fast-math flags]* to ; yields ty2 Overview: """"""""" @@ -11918,6 +11926,10 @@ NaN payload is propagated from the input ("Quieting NaN propagation" or "Unchanged NaN propagation" cases), then it is copied to the high order bits of the resulting payload, and the remaining low order bits are zero. +This instruction can also take any number of :ref:`fast-math +flags `, which are optimization hints to enable otherwise +unsafe floating-point optimizations. + Example: """""""" diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index d8d9c4fc4bb8a..4204ebba47504 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -105,6 +105,8 @@ Changes to the LLVM IR * Operand bundle values can now be metadata strings. +* Fast math flags are now permitted on `fptrunc` and `fpext`. + Changes to LLVM infrastructure ------------------------------ diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h index 23fd8350a29b3..8cdfa27ece937 100644 --- a/llvm/include/llvm/IR/IRBuilder.h +++ b/llvm/include/llvm/IR/IRBuilder.h @@ -2125,20 +2125,21 @@ class IRBuilderBase { return CreateCast(Instruction::SIToFP, V, DestTy, Name); } - Value *CreateFPTrunc(Value *V, Type *DestTy, - const Twine &Name = "") { + Value *CreateFPTrunc(Value *V, Type *DestTy, const Twine &Name = "", + MDNode *FPMathTag = nullptr) { if (IsFPConstrained) return CreateConstrainedFPCast( - Intrinsic::experimental_constrained_fptrunc, V, DestTy, nullptr, - Name); - return CreateCast(Instruction::FPTrunc, V, DestTy, Name); + Intrinsic::experimental_constrained_fptrunc, V, DestTy, nullptr, Name, + FPMathTag); + return CreateCast(Instruction::FPTrunc, V, DestTy, Name, FPMathTag); } - Value *CreateFPExt(Value *V, Type *DestTy, const Twine &Name = "") { + Value *CreateFPExt(Value *V, Type *DestTy, const Twine &Name = "", + MDNode *FPMathTag = nullptr) { if (IsFPConstrained) return CreateConstrainedFPCast(Intrinsic::experimental_constrained_fpext, - V, DestTy, nullptr, Name); - return CreateCast(Instruction::FPExt, V, DestTy, Name); + V, DestTy, nullptr, Name, FPMathTag); + return CreateCast(Instruction::FPExt, V, DestTy, Name, FPMathTag); } Value *CreatePtrToInt(Value *V, Type *DestTy, @@ -2186,12 +2187,15 @@ class IRBuilderBase { } Value *CreateCast(Instruction::CastOps Op, Value *V, Type *DestTy, - const Twine &Name = "") { + const Twine &Name = "", MDNode *FPMathTag = nullptr) { if (V->getType() == DestTy) return V; if (Value *Folded = Folder.FoldCast(Op, V, DestTy)) return Folded; - return Insert(CastInst::Create(Op, V, DestTy), Name); + Instruction *Cast = CastInst::Create(Op, V, DestTy); + if (isa(Cast)) + setFPAttrs(Cast, FPMathTag, FMF); + return Insert(Cast, Name); } Value *CreatePointerCast(Value *V, Type *DestTy, @@ -2241,12 +2245,13 @@ class IRBuilderBase { return CreateBitCast(V, DestTy, Name); } - Value *CreateFPCast(Value *V, Type *DestTy, const Twine &Name = "") { + Value *CreateFPCast(Value *V, Type *DestTy, const Twine &Name = "", + MDNode *FPMathTag = nullptr) { Instruction::CastOps CastOp = V->getType()->getScalarSizeInBits() > DestTy->getScalarSizeInBits() ? Instruction::FPTrunc : Instruction::FPExt; - return CreateCast(CastOp, V, DestTy, Name); + return CreateCast(CastOp, V, DestTy, Name, FPMathTag); } CallInst *CreateConstrainedFPCast( diff --git a/llvm/include/llvm/IR/Operator.h b/llvm/include/llvm/IR/Operator.h index 93bdcc5bb0291..4d77860be994e 100644 --- a/llvm/include/llvm/IR/Operator.h +++ b/llvm/include/llvm/IR/Operator.h @@ -365,6 +365,8 @@ class FPMathOperator : public Operator { case Instruction::FMul: case Instruction::FDiv: case Instruction::FRem: + case Instruction::FPTrunc: + case Instruction::FPExt: // FIXME: To clean up and correct the semantics of fast-math-flags, FCmp // should not be treated as a math op, but the other opcodes should. // This would make things consistent with Select/PHI (FP value type diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index dd72d46f5d9aa..34311499367b4 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -7004,8 +7004,6 @@ int LLParser::parseInstruction(Instruction *&Inst, BasicBlock *BB, return false; } case lltok::kw_sext: - case lltok::kw_fptrunc: - case lltok::kw_fpext: case lltok::kw_bitcast: case lltok::kw_addrspacecast: case lltok::kw_sitofp: @@ -7014,6 +7012,16 @@ int LLParser::parseInstruction(Instruction *&Inst, BasicBlock *BB, case lltok::kw_inttoptr: case lltok::kw_ptrtoint: return parseCast(Inst, PFS, KeywordVal); + case lltok::kw_fptrunc: + case lltok::kw_fpext: { + FastMathFlags FMF = EatFastMathFlagsIfPresent(); + if (parseCast(Inst, PFS, KeywordVal)) + return true; + if (FMF.any()) + Inst->setFastMathFlags(FMF); + return false; + } + // Other. case lltok::kw_select: { FastMathFlags FMF = EatFastMathFlagsIfPresent(); diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index a585a24a02246..85c6fadeda6cc 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5197,6 +5197,11 @@ Error BitcodeReader::parseFunctionBody(Function *F) { if (Record[OpNum] & (1 << bitc::TIO_NO_SIGNED_WRAP)) cast(I)->setHasNoSignedWrap(true); } + if (isa(I)) { + FastMathFlags FMF = getDecodedFastMathFlags(Record[OpNum]); + if (FMF.any()) + I->setFastMathFlags(FMF); + } } InstructionList.push_back(I); diff --git a/llvm/test/Assembler/fast-math-flags.ll b/llvm/test/Assembler/fast-math-flags.ll index 116f9305af8d3..9c08e9da1d19e 100644 --- a/llvm/test/Assembler/fast-math-flags.ll +++ b/llvm/test/Assembler/fast-math-flags.ll @@ -17,6 +17,8 @@ entry: %select = load i1, ptr @select ; CHECK: %arr = load [3 x float], ptr @arr %arr = load [3 x float], ptr @arr +; CHECK: %scalable = load , ptr @vec + %scalable = load , ptr @vec ; CHECK: %a = fadd float %x, %y %a = fadd float %x, %y @@ -42,6 +44,18 @@ entry: %f = fneg float %x ; CHECK: %f_vec = fneg <3 x float> %vec %f_vec = fneg <3 x float> %vec +; CHECK: %g = fpext float %x to double + %g = fpext float %x to double +; CHECK: %g_vec = fpext <3 x float> %vec to <3 x double> + %g_vec = fpext <3 x float> %vec to <3 x double> +; CHECK: %g_scalable = fpext %scalable to + %g_scalable = fpext %scalable to +; CHECK: %h = fptrunc float %x to half + %h = fptrunc float %x to half +; CHECK: %h_vec = fptrunc <3 x float> %vec to <3 x half> + %h_vec = fptrunc <3 x float> %vec to <3 x half> +; CHECK: %h_scalable = fptrunc %scalable to + %h_scalable = fptrunc %scalable to ; CHECK: ret float %f ret float %f } @@ -55,6 +69,8 @@ entry: %select = load i1, ptr @select ; CHECK: %arr = load [3 x float], ptr @arr %arr = load [3 x float], ptr @arr +; CHECK: %scalable = load , ptr @vec + %scalable = load , ptr @vec ; CHECK: %a = fadd nnan float %x, %y %a = fadd nnan float %x, %y @@ -80,6 +96,18 @@ entry: %f = fneg nnan float %x ; CHECK: %f_vec = fneg nnan <3 x float> %vec %f_vec = fneg nnan <3 x float> %vec +; CHECK: %g = fpext nnan float %x to double + %g = fpext nnan float %x to double +; CHECK: %g_vec = fpext nnan <3 x float> %vec to <3 x double> + %g_vec = fpext nnan <3 x float> %vec to <3 x double> +; CHECK: %g_scalable = fpext nnan %scalable to + %g_scalable = fpext nnan %scalable to +; CHECK: %h = fptrunc nnan float %x to half + %h = fptrunc nnan float %x to half +; CHECK: %h_vec = fptrunc nnan <3 x float> %vec to <3 x half> + %h_vec = fptrunc nnan <3 x float> %vec to <3 x half> +; CHECK: %h_scalable = fptrunc nnan %scalable to + %h_scalable = fptrunc nnan %scalable to ; CHECK: ret float %f ret float %f } @@ -93,6 +121,10 @@ entry: %b = fadd contract float %x, %y ; CHECK: %c = fmul contract float %a, %b %c = fmul contract float %a, %b +; CHECK: %d = fpext contract float %x to double + %d = fpext contract float %x to double +; CHECK: %e = fptrunc contract float %x to half + %e = fptrunc contract float %x to half ret float %c } @@ -104,6 +136,10 @@ define float @reassoc(float %x, float %y) { %b = fmul reassoc float %x, %y ; CHECK: %c = call reassoc float @foo(float %b) %c = call reassoc float @foo(float %b) +; CHECK: %d = fpext reassoc float %x to double + %d = fpext reassoc float %x to double +; CHECK: %e = fptrunc reassoc float %x to half + %e = fptrunc reassoc float %x to half ret float %c } @@ -127,6 +163,8 @@ entry: %select = load i1, ptr @select ; CHECK: %arr = load [3 x float], ptr @arr %arr = load [3 x float], ptr @arr +; CHECK: %scalable = load , ptr @vec + %scalable = load , ptr @vec ; CHECK: %a = fadd nnan ninf float %x, %y %a = fadd ninf nnan float %x, %y @@ -148,6 +186,18 @@ entry: %e = frem nnan float %x, %y ; CHECK: %e_vec = frem nnan ninf <3 x float> %vec, %vec %e_vec = frem ninf nnan <3 x float> %vec, %vec +; CHECK: %f = fpext nnan ninf float %x to double + %f = fpext ninf nnan float %x to double +; CHECK: %f_vec = fpext nnan ninf <3 x float> %vec to <3 x double> + %f_vec = fpext ninf nnan <3 x float> %vec to <3 x double> +; CHECK: %f_scalable = fpext nnan ninf %scalable to + %f_scalable = fpext ninf nnan %scalable to +; CHECK: %g = fptrunc nnan ninf float %x to half + %g = fptrunc ninf nnan float %x to half +; CHECK: %g_vec = fptrunc nnan ninf <3 x float> %vec to <3 x half> + %g_vec = fptrunc ninf nnan <3 x float> %vec to <3 x half> +; CHECK: %g_scalable = fptrunc nnan ninf %scalable to + %g_scalable = fptrunc ninf nnan %scalable to ; CHECK: ret float %e ret float %e } diff --git a/llvm/test/Bitcode/compatibility.ll b/llvm/test/Bitcode/compatibility.ll index a849789da536a..a28156cdaa279 100644 --- a/llvm/test/Bitcode/compatibility.ll +++ b/llvm/test/Bitcode/compatibility.ll @@ -1142,6 +1142,48 @@ define void @fastMathFlagsForStructCalls() { ret void } +; CHECK-LABEL: fastmathflags_fpext( +define void @fastmathflags_fpext(float %op1) { + %f.nnan = fpext nnan float %op1 to double + ; CHECK: %f.nnan = fpext nnan float %op1 to double + %f.ninf = fpext ninf float %op1 to double + ; CHECK: %f.ninf = fpext ninf float %op1 to double + %f.nsz = fpext nsz float %op1 to double + ; CHECK: %f.nsz = fpext nsz float %op1 to double + %f.arcp = fpext arcp float %op1 to double + ; CHECK: %f.arcp = fpext arcp float %op1 to double + %f.contract = fpext contract float %op1 to double + ; CHECK: %f.contract = fpext contract float %op1 to double + %f.afn = fpext afn float %op1 to double + ; CHECK: %f.afn = fpext afn float %op1 to double + %f.reassoc = fpext reassoc float %op1 to double + ; CHECK: %f.reassoc = fpext reassoc float %op1 to double + %f.fast = fpext fast float %op1 to double + ; CHECK: %f.fast = fpext fast float %op1 to double + ret void +} + +; CHECK-LABEL: fastmathflags_fptrunc( +define void @fastmathflags_fptrunc(float %op1) { + %f.nnan = fptrunc nnan float %op1 to half + ; CHECK: %f.nnan = fptrunc nnan float %op1 to half + %f.ninf = fptrunc ninf float %op1 to half + ; CHECK: %f.ninf = fptrunc ninf float %op1 to half + %f.nsz = fptrunc nsz float %op1 to half + ; CHECK: %f.nsz = fptrunc nsz float %op1 to half + %f.arcp = fptrunc arcp float %op1 to half + ; CHECK: %f.arcp = fptrunc arcp float %op1 to half + %f.contract = fptrunc contract float %op1 to half + ; CHECK: %f.contract = fptrunc contract float %op1 to half + %f.afn = fptrunc afn float %op1 to half + ; CHECK: %f.afn = fptrunc afn float %op1 to half + %f.reassoc = fptrunc reassoc float %op1 to half + ; CHECK: %f.reassoc = fptrunc reassoc float %op1 to half + %f.fast = fptrunc fast float %op1 to half + ; CHECK: %f.fast = fptrunc fast float %op1 to half + ret void +} + ;; Type System %opaquety = type opaque define void @typesystem() { diff --git a/llvm/test/Transforms/InstCombine/fpcast.ll b/llvm/test/Transforms/InstCombine/fpcast.ll index 69daac773a645..029e513ceafbc 100644 --- a/llvm/test/Transforms/InstCombine/fpcast.ll +++ b/llvm/test/Transforms/InstCombine/fpcast.ll @@ -75,7 +75,7 @@ define <2 x half> @unary_fneg_fptrunc_vec(<2 x float> %a) { define half @test4-fast(float %a) { ; CHECK-LABEL: @test4-fast( -; CHECK-NEXT: [[TMP1:%.*]] = fptrunc float [[A:%.*]] to half +; CHECK-NEXT: [[TMP1:%.*]] = fptrunc fast float [[A:%.*]] to half ; CHECK-NEXT: [[C:%.*]] = fneg fast half [[TMP1]] ; CHECK-NEXT: ret half [[C]] ; @@ -86,7 +86,7 @@ define half @test4-fast(float %a) { define half @test4_unary_fneg-fast(float %a) { ; CHECK-LABEL: @test4_unary_fneg-fast( -; CHECK-NEXT: [[TMP1:%.*]] = fptrunc float [[A:%.*]] to half +; CHECK-NEXT: [[TMP1:%.*]] = fptrunc fast float [[A:%.*]] to half ; CHECK-NEXT: [[C:%.*]] = fneg fast half [[TMP1]] ; CHECK-NEXT: ret half [[C]] ; From 12ca72ba7f11fb880794a37cffdea5f47e3062f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Wed, 4 Dec 2024 11:44:46 +0100 Subject: [PATCH 018/593] Reapply "[clang][bytecode] Handle bitcasts involving bitfields (#116843)" This reverts commit 54db16221c92eb52efbea90ad5b5d2a1d00cda3e. Check for existence of __SIZOEF_INT128__ so we don't run those tests on targets that don't have int128. --- clang/lib/AST/ByteCode/BitcastBuffer.cpp | 95 ++++ clang/lib/AST/ByteCode/BitcastBuffer.h | 88 ++++ clang/lib/AST/ByteCode/Boolean.h | 4 +- clang/lib/AST/ByteCode/Integral.h | 1 + .../lib/AST/ByteCode/InterpBuiltinBitCast.cpp | 284 +++++------ clang/lib/AST/CMakeLists.txt | 1 + .../ByteCode/builtin-bit-cast-bitfields.cpp | 441 ++++++++++++++++++ clang/test/AST/ByteCode/builtin-bit-cast.cpp | 119 ++--- .../unittests/AST/ByteCode/BitcastBuffer.cpp | 87 ++++ clang/unittests/AST/ByteCode/CMakeLists.txt | 1 + 10 files changed, 861 insertions(+), 260 deletions(-) create mode 100644 clang/lib/AST/ByteCode/BitcastBuffer.cpp create mode 100644 clang/lib/AST/ByteCode/BitcastBuffer.h create mode 100644 clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp create mode 100644 clang/unittests/AST/ByteCode/BitcastBuffer.cpp diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.cpp b/clang/lib/AST/ByteCode/BitcastBuffer.cpp new file mode 100644 index 0000000000000..0cc97b0b6bf19 --- /dev/null +++ b/clang/lib/AST/ByteCode/BitcastBuffer.cpp @@ -0,0 +1,95 @@ +//===-------------------- Bitcastbuffer.cpp ---------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#include "BitcastBuffer.h" + +using namespace clang; +using namespace clang::interp; + +/// Returns the value of the bit in the given sequence of bytes. +static inline bool bitof(const std::byte *B, Bits BitIndex) { + return (B[BitIndex.roundToBytes()] & + (std::byte{1} << BitIndex.getOffsetInByte())) != std::byte{0}; +} + +void BitcastBuffer::pushData(const std::byte *In, Bits BitOffset, Bits BitWidth, + Endian TargetEndianness) { + for (unsigned It = 0; It != BitWidth.getQuantity(); ++It) { + bool BitValue = bitof(In, Bits(It)); + if (!BitValue) + continue; + + Bits DstBit; + if (TargetEndianness == Endian::Little) + DstBit = BitOffset + Bits(It); + else + DstBit = size() - BitOffset - BitWidth + Bits(It); + + size_t DstByte = DstBit.roundToBytes(); + Data[DstByte] |= std::byte{1} << DstBit.getOffsetInByte(); + } +} + +std::unique_ptr +BitcastBuffer::copyBits(Bits BitOffset, Bits BitWidth, Bits FullBitWidth, + Endian TargetEndianness) const { + assert(BitWidth.getQuantity() <= FullBitWidth.getQuantity()); + assert(FullBitWidth.isFullByte()); + auto Out = std::make_unique(FullBitWidth.roundToBytes()); + + for (unsigned It = 0; It != BitWidth.getQuantity(); ++It) { + Bits BitIndex; + if (TargetEndianness == Endian::Little) + BitIndex = BitOffset + Bits(It); + else + BitIndex = size() - BitWidth - BitOffset + Bits(It); + + bool BitValue = bitof(Data.get(), BitIndex); + if (!BitValue) + continue; + + Bits DstBit = Bits(It); + size_t DstByte = DstBit.roundToBytes(); + Out[DstByte] |= std::byte{1} << DstBit.getOffsetInByte(); + } + + return Out; +} + +#if 0 + template + static std::string hex(T t) { + std::stringstream stream; + stream << std::hex << (int)t; + return std::string(stream.str()); + } + + + void BitcastBuffer::dump(bool AsHex = true) const { + llvm::errs() << "LSB\n "; + unsigned LineLength = 0; + for (unsigned I = 0; I != (FinalBitSize / 8); ++I) { + std::byte B = Data[I]; + if (AsHex) { + std::stringstream stream; + stream << std::hex << (int)B; + llvm::errs() << stream.str(); + LineLength += stream.str().size() + 1; + } else { + llvm::errs() << std::bitset<8>((int)B).to_string(); + LineLength += 8 + 1; + // llvm::errs() << (int)B; + } + llvm::errs() << ' '; + } + llvm::errs() << '\n'; + + for (unsigned I = 0; I != LineLength; ++I) + llvm::errs() << ' '; + llvm::errs() << "MSB\n"; + } +#endif diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.h b/clang/lib/AST/ByteCode/BitcastBuffer.h new file mode 100644 index 0000000000000..8442df5c60cf5 --- /dev/null +++ b/clang/lib/AST/ByteCode/BitcastBuffer.h @@ -0,0 +1,88 @@ +//===--------------------- BitcastBuffer.h ----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_AST_INTERP_BITCAST_BUFFER_H +#define LLVM_CLANG_AST_INTERP_BITCAST_BUFFER_H + +#include +#include +#include + +namespace clang { +namespace interp { + +enum class Endian { Little, Big }; + +/// A quantity in bits. +struct Bits { + size_t N = 0; + Bits() = default; + static Bits zero() { return Bits(0); } + explicit Bits(size_t Quantity) : N(Quantity) {} + size_t getQuantity() const { return N; } + size_t roundToBytes() const { return N / 8; } + size_t getOffsetInByte() const { return N % 8; } + bool isFullByte() const { return N % 8 == 0; } + bool nonZero() const { return N != 0; } + + Bits operator-(Bits Other) { return Bits(N - Other.N); } + Bits operator+(Bits Other) { return Bits(N + Other.N); } + Bits operator+=(size_t O) { + N += O; + return *this; + } + + bool operator>=(Bits Other) { return N >= Other.N; } +}; + +/// A quantity in bytes. +struct Bytes { + size_t N; + explicit Bytes(size_t Quantity) : N(Quantity) {} + size_t getQuantity() const { return N; } + Bits toBits() const { return Bits(N * 8); } +}; + +/// Track what bits have been initialized to known values and which ones +/// have indeterminate value. +struct BitcastBuffer { + Bits FinalBitSize; + std::unique_ptr Data; + + BitcastBuffer(Bits FinalBitSize) : FinalBitSize(FinalBitSize) { + assert(FinalBitSize.isFullByte()); + unsigned ByteSize = FinalBitSize.roundToBytes(); + Data = std::make_unique(ByteSize); + } + + /// Returns the buffer size in bits. + Bits size() const { return FinalBitSize; } + + /// Returns \c true if all bits in the buffer have been initialized. + bool allInitialized() const { + // FIXME: Implement. + return true; + } + + /// Push \p BitWidth bits at \p BitOffset from \p In into the buffer. + /// \p TargetEndianness is the endianness of the target we're compiling for. + /// \p In must hold at least \p BitWidth many bits. + void pushData(const std::byte *In, Bits BitOffset, Bits BitWidth, + Endian TargetEndianness); + + /// Copy \p BitWidth bits at offset \p BitOffset from the buffer. + /// \p TargetEndianness is the endianness of the target we're compiling for. + /// + /// The returned output holds exactly (\p FullBitWidth / 8) bytes. + std::unique_ptr copyBits(Bits BitOffset, Bits BitWidth, + Bits FullBitWidth, + Endian TargetEndianness) const; +}; + +} // namespace interp +} // namespace clang +#endif diff --git a/clang/lib/AST/ByteCode/Boolean.h b/clang/lib/AST/ByteCode/Boolean.h index 78d75e75c7531..8380e85865ac5 100644 --- a/clang/lib/AST/ByteCode/Boolean.h +++ b/clang/lib/AST/ByteCode/Boolean.h @@ -82,9 +82,7 @@ class Boolean final { Boolean truncate(unsigned TruncBits) const { return *this; } static Boolean bitcastFromMemory(const std::byte *Buff, unsigned BitWidth) { - // Boolean width is currently always 8 for all supported targets. If this - // changes we need to get the bool width from the target info. - assert(BitWidth == 8); + // Just load the first byte. bool Val = static_cast(*Buff); return Boolean(Val); } diff --git a/clang/lib/AST/ByteCode/Integral.h b/clang/lib/AST/ByteCode/Integral.h index cb81b5a698924..26585799e5ead 100644 --- a/clang/lib/AST/ByteCode/Integral.h +++ b/clang/lib/AST/ByteCode/Integral.h @@ -183,6 +183,7 @@ template class Integral final { } Integral truncate(unsigned TruncBits) const { + assert(TruncBits >= 1); if (TruncBits >= Bits) return *this; const ReprT BitMask = (ReprT(1) << ReprT(TruncBits)) - 1; diff --git a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp index b1230f92ddf1d..2fae7f873ab11 100644 --- a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp +++ b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// #include "InterpBuiltinBitCast.h" +#include "BitcastBuffer.h" #include "Boolean.h" #include "Context.h" #include "Floating.h" @@ -21,9 +22,19 @@ using namespace clang; using namespace clang::interp; +/// Implement __builtin_bit_cast and related operations. +/// Since our internal representation for data is more complex than +/// something we can simply memcpy or memcmp, we first bitcast all the data +/// into a buffer, which we then later use to copy the data into the target. + +// TODO: +// - Try to minimize heap allocations. +// - Optimize the common case of only pushing and pulling full +// bytes to/from the buffer. + /// Used to iterate over pointer fields. using DataFunc = llvm::function_ref; + Bits BitOffset, bool PackedBools)>; #define BITCAST_TYPE_SWITCH(Expr, B) \ do { \ @@ -61,156 +72,72 @@ using DataFunc = llvm::function_ref Data; - - BitcastBuffer() = default; - - size_t size() const { return SizeInBits; } - - const std::byte *data() const { return Data.data(); } - - std::byte *getBytes(unsigned BitOffset) const { - assert(BitOffset % 8 == 0); - assert(BitOffset < SizeInBits); - return const_cast(data() + (BitOffset / 8)); - } - - bool allInitialized() const { - // FIXME: Implement. - return true; - } - - bool atByteBoundary() const { return (Data.size() * 8) == SizeInBits; } - - void pushBit(bool Value) { - if (atByteBoundary()) - Data.push_back(std::byte{0}); - - if (Value) - Data.back() |= (std::byte{1} << (SizeInBits % 8)); - ++SizeInBits; - } - - void pushData(const std::byte *data, size_t BitWidth, bool BigEndianTarget) { - bool OnlyFullBytes = BitWidth % 8 == 0; - unsigned NBytes = BitWidth / 8; - - size_t BitsHandled = 0; - // Read all full bytes first - for (size_t I = 0; I != NBytes; ++I) { - std::byte B = - BigEndianTarget ? data[NBytes - OnlyFullBytes - I] : data[I]; - for (unsigned X = 0; X != 8; ++X) { - pushBit(bitof(B, X)); - ++BitsHandled; - } - } - - if (BitsHandled == BitWidth) - return; - - // Rest of the bits. - assert((BitWidth - BitsHandled) < 8); - std::byte B = BigEndianTarget ? data[0] : data[NBytes]; - for (size_t I = 0, E = (BitWidth - BitsHandled); I != E; ++I) { - pushBit(bitof(B, I)); - ++BitsHandled; - } - - assert(BitsHandled == BitWidth); - } -}; - -/// We use this to recursively iterate over all fields and elemends of a pointer +/// We use this to recursively iterate over all fields and elements of a pointer /// and extract relevant data for a bitcast. -static bool enumerateData(const Pointer &P, const Context &Ctx, size_t Offset, - DataFunc F) { +static bool enumerateData(const Pointer &P, const Context &Ctx, Bits Offset, + Bits BitsToRead, DataFunc F) { const Descriptor *FieldDesc = P.getFieldDesc(); assert(FieldDesc); // Primitives. if (FieldDesc->isPrimitive()) - return F(P, FieldDesc->getPrimType(), Offset, false); + return F(P, FieldDesc->getPrimType(), Offset, /*PackedBools=*/false); // Primitive arrays. if (FieldDesc->isPrimitiveArray()) { - bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); QualType ElemType = FieldDesc->getElemQualType(); size_t ElemSizeInBits = Ctx.getASTContext().getTypeSize(ElemType); PrimType ElemT = *Ctx.classify(ElemType); // Special case, since the bools here are packed. bool PackedBools = FieldDesc->getType()->isExtVectorBoolType(); + unsigned NumElems = FieldDesc->getNumElems(); bool Ok = true; - for (unsigned I = 0; I != FieldDesc->getNumElems(); ++I) { - unsigned Index = BigEndianTarget ? (FieldDesc->getNumElems() - 1 - I) : I; - Ok = Ok && F(P.atIndex(Index), ElemT, Offset, PackedBools); - Offset += ElemSizeInBits; + for (unsigned I = P.getIndex(); I != NumElems; ++I) { + Ok = Ok && F(P.atIndex(I), ElemT, Offset, PackedBools); + Offset += PackedBools ? 1 : ElemSizeInBits; + if (Offset >= BitsToRead) + break; } return Ok; } // Composite arrays. if (FieldDesc->isCompositeArray()) { - bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); QualType ElemType = FieldDesc->getElemQualType(); size_t ElemSizeInBits = Ctx.getASTContext().getTypeSize(ElemType); for (unsigned I = 0; I != FieldDesc->getNumElems(); ++I) { - unsigned Index = BigEndianTarget ? (FieldDesc->getNumElems() - 1 - I) : I; - enumerateData(P.atIndex(Index).narrow(), Ctx, Offset, F); + enumerateData(P.atIndex(I).narrow(), Ctx, Offset, BitsToRead, F); Offset += ElemSizeInBits; + if (Offset >= BitsToRead) + break; } return true; } // Records. if (FieldDesc->isRecord()) { - bool BigEndianTarget = Ctx.getASTContext().getTargetInfo().isBigEndian(); const Record *R = FieldDesc->ElemRecord; const ASTRecordLayout &Layout = Ctx.getASTContext().getASTRecordLayout(R->getDecl()); bool Ok = true; - auto enumerateFields = [&]() -> void { - for (unsigned I = 0, N = R->getNumFields(); I != N; ++I) { - const Record::Field *Fi = - R->getField(BigEndianTarget ? (N - 1 - I) : I); - Pointer Elem = P.atField(Fi->Offset); - size_t BitOffset = - Offset + Layout.getFieldOffset(Fi->Decl->getFieldIndex()); - Ok = Ok && enumerateData(Elem, Ctx, BitOffset, F); - } - }; - auto enumerateBases = [&]() -> void { - for (unsigned I = 0, N = R->getNumBases(); I != N; ++I) { - const Record::Base *B = R->getBase(BigEndianTarget ? (N - 1 - I) : I); - Pointer Elem = P.atField(B->Offset); - CharUnits ByteOffset = - Layout.getBaseClassOffset(cast(B->Decl)); - size_t BitOffset = Offset + Ctx.getASTContext().toBits(ByteOffset); - Ok = Ok && enumerateData(Elem, Ctx, BitOffset, F); - } - }; - - if (BigEndianTarget) { - enumerateFields(); - enumerateBases(); - } else { - enumerateBases(); - enumerateFields(); + for (const Record::Field &Fi : R->fields()) { + Pointer Elem = P.atField(Fi.Offset); + Bits BitOffset = + Offset + Bits(Layout.getFieldOffset(Fi.Decl->getFieldIndex())); + Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); + } + for (const Record::Base &B : R->bases()) { + Pointer Elem = P.atField(B.Offset); + CharUnits ByteOffset = + Layout.getBaseClassOffset(cast(B.Decl)); + Bits BitOffset = Offset + Bits(Ctx.getASTContext().toBits(ByteOffset)); + Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); } return Ok; @@ -220,8 +147,8 @@ static bool enumerateData(const Pointer &P, const Context &Ctx, size_t Offset, } static bool enumeratePointerFields(const Pointer &P, const Context &Ctx, - DataFunc F) { - return enumerateData(P, Ctx, 0, F); + Bits BitsToRead, DataFunc F) { + return enumerateData(P, Ctx, Bits::zero(), BitsToRead, F); } // This function is constexpr if and only if To, From, and the types of @@ -295,62 +222,57 @@ static bool CheckBitcastType(InterpState &S, CodePtr OpPC, QualType T, static bool readPointerToBuffer(const Context &Ctx, const Pointer &FromPtr, BitcastBuffer &Buffer, bool ReturnOnUninit) { const ASTContext &ASTCtx = Ctx.getASTContext(); - bool SwapData = (ASTCtx.getTargetInfo().isLittleEndian() != - llvm::sys::IsLittleEndianHost); - bool BigEndianTarget = ASTCtx.getTargetInfo().isBigEndian(); + Endian TargetEndianness = + ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; return enumeratePointerFields( - FromPtr, Ctx, - [&](const Pointer &P, PrimType T, size_t BitOffset, + FromPtr, Ctx, Buffer.size(), + [&](const Pointer &P, PrimType T, Bits BitOffset, bool PackedBools) -> bool { - if (!P.isInitialized()) { - assert(false && "Implement uninitialized value tracking"); - return ReturnOnUninit; - } + // if (!P.isInitialized()) { + // assert(false && "Implement uninitialized value tracking"); + // return ReturnOnUninit; + // } - assert(P.isInitialized()); + // assert(P.isInitialized()); // nullptr_t is a PT_Ptr for us, but it's still not std::is_pointer_v. if (T == PT_Ptr) assert(false && "Implement casting to pointer types"); CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); - unsigned BitWidth = ASTCtx.toBits(ObjectReprChars); - llvm::SmallVector Buff(ObjectReprChars.getQuantity()); + Bits BitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); + Bits FullBitWidth = BitWidth; + auto Buff = + std::make_unique(ObjectReprChars.getQuantity()); // Work around floating point types that contain unused padding bytes. // This is really just `long double` on x86, which is the only // fundamental type with padding bytes. if (T == PT_Float) { const Floating &F = P.deref(); - unsigned NumBits = - llvm::APFloatBase::getSizeInBits(F.getAPFloat().getSemantics()); - assert(NumBits % 8 == 0); - assert(NumBits <= (ObjectReprChars.getQuantity() * 8)); - F.bitcastToMemory(Buff.data()); + Bits NumBits = Bits( + llvm::APFloatBase::getSizeInBits(F.getAPFloat().getSemantics())); + assert(NumBits.isFullByte()); + assert(NumBits.getQuantity() <= FullBitWidth.getQuantity()); + F.bitcastToMemory(Buff.get()); // Now, only (maybe) swap the actual size of the float, excluding the // padding bits. - if (SwapData) - swapBytes(Buff.data(), NumBits / 8); + if (llvm::sys::IsBigEndianHost) + swapBytes(Buff.get(), NumBits.roundToBytes()); } else { if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) - BitWidth = FD->getBitWidthValue(ASTCtx); + BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), + (unsigned)FullBitWidth.getQuantity())); else if (T == PT_Bool && PackedBools) - BitWidth = 1; - - BITCAST_TYPE_SWITCH(T, { - T Val = P.deref(); - Val.bitcastToMemory(Buff.data()); - }); - if (SwapData) - swapBytes(Buff.data(), ObjectReprChars.getQuantity()); - } + BitWidth = Bits(1); - if (BitWidth != (Buff.size() * 8) && BigEndianTarget) { - Buffer.pushData(Buff.data() + (Buff.size() - 1 - (BitWidth / 8)), - BitWidth, BigEndianTarget); - } else { - Buffer.pushData(Buff.data(), BitWidth, BigEndianTarget); + BITCAST_TYPE_SWITCH(T, { P.deref().bitcastToMemory(Buff.get()); }); + + if (llvm::sys::IsBigEndianHost) + swapBytes(Buff.get(), FullBitWidth.roundToBytes()); } + + Buffer.pushData(Buff.get(), BitOffset, BitWidth, TargetEndianness); return true; }); } @@ -362,16 +284,21 @@ bool clang::interp::DoBitCast(InterpState &S, CodePtr OpPC, const Pointer &Ptr, assert(Ptr.isBlockPointer()); assert(Buff); - BitcastBuffer Buffer; + Bits BitSize = Bytes(BuffSize).toBits(); + BitcastBuffer Buffer(BitSize); if (!CheckBitcastType(S, OpPC, Ptr.getType(), /*IsToType=*/false)) return false; bool Success = readPointerToBuffer(S.getContext(), Ptr, Buffer, /*ReturnOnUninit=*/false); - assert(Buffer.size() == BuffSize * 8); - HasIndeterminateBits = !Buffer.allInitialized(); - std::memcpy(Buff, Buffer.data(), BuffSize); + + const ASTContext &ASTCtx = S.getASTContext(); + Endian TargetEndianness = + ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; + auto B = Buffer.copyBits(Bits::zero(), BitSize, BitSize, TargetEndianness); + + std::memcpy(Buff, B.get(), BuffSize); if (llvm::sys::IsBigEndianHost) swapBytes(Buff, BuffSize); @@ -393,43 +320,60 @@ bool clang::interp::DoBitCastPtr(InterpState &S, CodePtr OpPC, if (!CheckBitcastType(S, OpPC, FromType, /*IsToType=*/false)) return false; - BitcastBuffer Buffer; + const ASTContext &ASTCtx = S.getASTContext(); + + CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(ToType); + BitcastBuffer Buffer(Bits(ASTCtx.toBits(ObjectReprChars))); readPointerToBuffer(S.getContext(), FromPtr, Buffer, /*ReturnOnUninit=*/false); // Now read the values out of the buffer again and into ToPtr. - const ASTContext &ASTCtx = S.getASTContext(); - size_t BitOffset = 0; + Endian TargetEndianness = + ASTCtx.getTargetInfo().isLittleEndian() ? Endian::Little : Endian::Big; bool Success = enumeratePointerFields( - ToPtr, S.getContext(), - [&](const Pointer &P, PrimType T, size_t _, bool PackedBools) -> bool { + ToPtr, S.getContext(), Buffer.size(), + [&](const Pointer &P, PrimType T, Bits BitOffset, + bool PackedBools) -> bool { + CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); + Bits FullBitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); if (T == PT_Float) { - CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); const auto &Semantics = ASTCtx.getFloatTypeSemantics(P.getType()); - unsigned NumBits = llvm::APFloatBase::getSizeInBits(Semantics); - assert(NumBits % 8 == 0); - assert(NumBits <= ASTCtx.toBits(ObjectReprChars)); - std::byte *M = Buffer.getBytes(BitOffset); + Bits NumBits = Bits(llvm::APFloatBase::getSizeInBits(Semantics)); + assert(NumBits.isFullByte()); + assert(NumBits.getQuantity() <= FullBitWidth.getQuantity()); + auto M = Buffer.copyBits(BitOffset, NumBits, FullBitWidth, + TargetEndianness); if (llvm::sys::IsBigEndianHost) - swapBytes(M, NumBits / 8); + swapBytes(M.get(), NumBits.roundToBytes()); - P.deref() = Floating::bitcastFromMemory(M, Semantics); + P.deref() = Floating::bitcastFromMemory(M.get(), Semantics); P.initialize(); - BitOffset += ASTCtx.toBits(ObjectReprChars); return true; } - BITCAST_TYPE_SWITCH_FIXED_SIZE(T, { - std::byte *M = Buffer.getBytes(BitOffset); + Bits BitWidth; + if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) + BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), + (unsigned)FullBitWidth.getQuantity())); + else if (T == PT_Bool && PackedBools) + BitWidth = Bits(1); + else + BitWidth = FullBitWidth; - if (llvm::sys::IsBigEndianHost) - swapBytes(M, T::bitWidth() / 8); + auto Memory = Buffer.copyBits(BitOffset, BitWidth, FullBitWidth, + TargetEndianness); + if (llvm::sys::IsBigEndianHost) + swapBytes(Memory.get(), FullBitWidth.roundToBytes()); - P.deref() = T::bitcastFromMemory(M, T::bitWidth()); - P.initialize(); - BitOffset += T::bitWidth(); + BITCAST_TYPE_SWITCH_FIXED_SIZE(T, { + if (BitWidth.nonZero()) + P.deref() = T::bitcastFromMemory(Memory.get(), T::bitWidth()) + .truncate(BitWidth.getQuantity()); + else + P.deref() = T::zero(); }); + P.initialize(); return true; }); diff --git a/clang/lib/AST/CMakeLists.txt b/clang/lib/AST/CMakeLists.txt index 52c6a45de9a26..cb13c5225b713 100644 --- a/clang/lib/AST/CMakeLists.txt +++ b/clang/lib/AST/CMakeLists.txt @@ -65,6 +65,7 @@ add_clang_library(clangAST ExternalASTSource.cpp FormatString.cpp InheritViz.cpp + ByteCode/BitcastBuffer.cpp ByteCode/ByteCodeEmitter.cpp ByteCode/Compiler.cpp ByteCode/Context.cpp diff --git a/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp b/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp new file mode 100644 index 0000000000000..f151c61319677 --- /dev/null +++ b/clang/test/AST/ByteCode/builtin-bit-cast-bitfields.cpp @@ -0,0 +1,441 @@ +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -triple armv8 -fexperimental-new-constant-interpreter %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -triple aarch64_be-linux-gnu -fexperimental-new-constant-interpreter %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter -triple powerpc64le-unknown-unknown -mabi=ieeelongdouble %s +// RUN: %clang_cc1 -verify=expected,both -std=c++2a -fsyntax-only -fexperimental-new-constant-interpreter -triple powerpc64-unknown-unknown -mabi=ieeelongdouble %s + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define LITTLE_END 1 +#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define LITTLE_END 0 +#else +# error "huh?" +#endif + +typedef decltype(nullptr) nullptr_t; +typedef __INTPTR_TYPE__ intptr_t; +typedef unsigned __INT16_TYPE__ uint16_t; +typedef unsigned __INT32_TYPE__ uint32_t; +typedef unsigned __INT64_TYPE__ uint64_t; + +static_assert(sizeof(int) == 4); +static_assert(sizeof(long long) == 8); + +template +constexpr To bit_cast(const From &from) { + static_assert(sizeof(To) == sizeof(From)); + return __builtin_bit_cast(To, from); +} + +template +constexpr bool check_round_trip(const Init &init) { + return bit_cast(bit_cast(init)) == init; +} + +template +constexpr Init round_trip(const Init &init) { + return bit_cast(bit_cast(init)); +} + +namespace std { +enum byte : unsigned char {}; +} // namespace std + +template +struct bits { + T : Pad; + T bits : N; + + constexpr bool operator==(const T& rhs) const { + return bits == rhs; + } +}; + +template +constexpr bool operator==(const struct bits& lhs, const struct bits& rhs) { + return lhs.bits == rhs.bits; +} + +template +struct bytes { + using size_t = unsigned int; + unsigned char d[N]; + + constexpr unsigned char operator[](size_t index) { + if (index < N) + return d[index]; + return -1; + } +}; + +namespace Sanity { + /// This is just one byte, and we extract 2 bits from it. + /// + /// 3 is 0000'0011. + /// For both LE and BE, the buffer will contain exactly that + /// byte, unaltered and not reordered in any way. It contains all 8 bits. + static_assert(__builtin_bit_cast(bits<2>, (unsigned char)3) == (LITTLE_END ? 3 : 0)); + + /// Similarly, we have one full byte of data, with the two most-significant + /// bits set: + /// 192 is 1100'0000 + static_assert(__builtin_bit_cast(bits<2>, (unsigned char)192) == (LITTLE_END ? 0 : 3)); + + + /// Here we are instead bitcasting two 1-bits into a destination of 8 bits. + /// On LE, we should pick the two least-significant bits. On BE, the opposite. + /// NOTE: Can't verify this with gcc. + constexpr auto B1 = bits<2>{3}; + static_assert(__builtin_bit_cast(unsigned char, B1) == (LITTLE_END ? 3 : 192)); + + /// This should be 0000'0110. + /// On LE, this should result in 6. + /// On BE, 1100'0000 = 192. + constexpr auto B2 = bits<3>{6}; + static_assert(__builtin_bit_cast(unsigned char, B2) == (LITTLE_END ? 6 : 192)); + + constexpr auto B3 = bits<4>{6}; + static_assert(__builtin_bit_cast(unsigned char, B3) == (LITTLE_END ? 6 : 96)); + + struct B { + std::byte b0 : 4; + std::byte b1 : 4; + }; + + /// We can properly decompose one byte (8 bit) int two 4-bit bitfields. + constexpr struct { unsigned char b0; } T = {0xee}; + constexpr B MB = __builtin_bit_cast(B, T); + static_assert(MB.b0 == 0xe); + static_assert(MB.b1 == 0xe); +} + +namespace BitFields { + struct BitFields { + unsigned a : 2; + unsigned b : 30; + }; + + constexpr unsigned A = __builtin_bit_cast(unsigned, BitFields{3, 16}); + static_assert(A == (LITTLE_END ? 67 : 3221225488)); + + struct S { + unsigned a : 2; + unsigned b : 28; + unsigned c : 2; + }; + + constexpr S s = __builtin_bit_cast(S, 0xFFFFFFFF); + static_assert(s.a == 3); + static_assert(s.b == 268435455); + static_assert(s.c == 3); + + void bitfield_indeterminate() { + struct BF { unsigned char z : 2; }; + enum byte : unsigned char {}; + + constexpr BF bf = {0x3}; + /// Requires bitcasts to composite types. + static_assert(bit_cast>(bf).bits == bf.z); + static_assert(bit_cast(bf)); + + static_assert(__builtin_bit_cast(byte, bf)); + + struct M { + // ref-note@+1 {{subobject declared here}} + unsigned char mem[sizeof(BF)]; + }; + // ref-error@+2 {{initialized by a constant expression}} + // ref-note@+1 {{not initialized}} + constexpr M m = bit_cast(bf); + + constexpr auto f = []() constexpr { + // bits<24, unsigned int, LITTLE_END ? 0 : 8> B = {0xc0ffee}; + constexpr struct { unsigned short b1; unsigned char b0; } B = {0xc0ff, 0xee}; + return bit_cast>(B); + }; + + static_assert(f()[0] + f()[1] + f()[2] == 0xc0 + 0xff + 0xee); + { + // ref-error@+2 {{initialized by a constant expression}} + // ref-note@+1 {{read of uninitialized object is not allowed in a constant expression}} + constexpr auto _bad = f()[3]; + } + + struct B { + unsigned short s0 : 8; + unsigned short s1 : 8; + std::byte b0 : 4; + std::byte b1 : 4; + std::byte b2 : 4; + }; + constexpr auto g = [f]() constexpr { + return bit_cast(f()); + }; + static_assert(g().s0 + g().s1 + g().b0 + g().b1 == 0xc0 + 0xff + 0xe + 0xe); + { + // ref-error@+2 {{initialized by a constant expression}} + // ref-note@+1 {{read of uninitialized object is not allowed in a constant expression}} + constexpr auto _bad = g().b2; + } + } +} + +namespace BoolVectors { + typedef bool bool32 __attribute__((ext_vector_type(32))); + constexpr auto v = bit_cast(0xa1c0ffee); +#if LITTLE_END + static_assert(!v[0]); + static_assert(v[1]); + static_assert(v[2]); + static_assert(v[3]); + static_assert(!v[4]); + static_assert(v[5]); + static_assert(v[6]); + static_assert(v[7]); + + static_assert(v[8]); + static_assert(v[9]); + static_assert(v[10]); + static_assert(v[11]); + static_assert(v[12]); + static_assert(v[13]); + static_assert(v[14]); + static_assert(v[15]); + + static_assert(!v[16]); + static_assert(!v[17]); + static_assert(!v[18]); + static_assert(!v[19]); + static_assert(!v[20]); + static_assert(!v[21]); + static_assert(v[22]); + static_assert(v[23]); + + static_assert(v[24]); + static_assert(!v[25]); + static_assert(!v[26]); + static_assert(!v[27]); + static_assert(!v[28]); + static_assert(v[29]); + static_assert(!v[30]); + static_assert(v[31]); + +#else + static_assert(v[0]); + static_assert(!v[1]); + static_assert(v[2]); + static_assert(!v[3]); + static_assert(!v[4]); + static_assert(!v[5]); + static_assert(!v[6]); + static_assert(v[7]); + + static_assert(v[8]); + static_assert(v[9]); + static_assert(!v[10]); + static_assert(!v[11]); + static_assert(!v[12]); + static_assert(!v[13]); + static_assert(!v[14]); + static_assert(!v[15]); + + static_assert(v[16]); + static_assert(v[17]); + static_assert(v[18]); + static_assert(v[19]); + static_assert(v[20]); + static_assert(v[21]); + static_assert(v[22]); + static_assert(v[23]); + + static_assert(v[24]); + static_assert(v[25]); + static_assert(v[26]); + static_assert(!v[27]); + static_assert(v[28]); + static_assert(v[29]); + static_assert(v[30]); + static_assert(!v[31]); +#endif + + struct pad { + unsigned short s; + unsigned char c; + }; + + constexpr auto p = bit_cast(v); + static_assert(p.s == (LITTLE_END ? 0xffee : 0xa1c0)); + static_assert(p.c == (LITTLE_END ? 0xc0 : 0xff)); +} + +namespace TwoShorts { + struct B { + unsigned short s0 : 8; + unsigned short s1 : 8; + }; + constexpr struct { unsigned short b1;} T = {0xc0ff}; + constexpr B MB = __builtin_bit_cast(B, T); +#if LITTLE_END + static_assert(MB.s0 == 0xff); + static_assert(MB.s1 == 0xc0); +#else + static_assert(MB.s0 == 0xc0); + static_assert(MB.s1 == 0xff); + +#endif +} + +typedef bool bool8 __attribute__((ext_vector_type(8))); +typedef bool bool9 __attribute__((ext_vector_type(9))); +typedef bool bool16 __attribute__((ext_vector_type(16))); +typedef bool bool17 __attribute__((ext_vector_type(17))); +typedef bool bool32 __attribute__((ext_vector_type(32))); +typedef bool bool128 __attribute__((ext_vector_type(128))); + +static_assert(bit_cast(bool8{1,0,1,0,1,0,1,0}) == (LITTLE_END ? 0x55 : 0xAA), ""); +constexpr bool8 b8 = __builtin_bit_cast(bool8, 0x55); // both-error {{'__builtin_bit_cast' source type 'int' does not match destination type 'bool8' (vector of 8 'bool' values) (4 vs 1 bytes)}} +static_assert(check_round_trip(static_cast(0)), ""); +static_assert(check_round_trip(static_cast(1)), ""); +static_assert(check_round_trip(static_cast(0x55)), ""); + +static_assert(bit_cast(bool16{1,1,1,1,1,0,0,0, 1,1,1,1,0,1,0,0}) == (LITTLE_END ? 0x2F1F : 0xF8F4), ""); + +static_assert(check_round_trip(static_cast(0xCAFE)), ""); +static_assert(check_round_trip(static_cast(0xCAFEBABE)), ""); + +#ifdef __SIZEOF_INT128__ +static_assert(check_round_trip(static_cast<__int128_t>(0xCAFEBABE0C05FEFEULL)), ""); +#endif + +static_assert(bit_cast, uint16_t>(0xcafe) == (LITTLE_END ? 0x95 : 0x7f)); +static_assert(bit_cast, uint16_t>(0xcafe) == (LITTLE_END ? 0x2 : 0xf)); +static_assert(bit_cast, uint32_t>(0xa1cafe) == (LITTLE_END ? 0x4 : 0x5)); + +struct S { + // little endian: + // MSB .... .... LSB + // |y| |x| + // + // big endian + // MSB .... .... LSB + // |x| |y| + + unsigned char x : 4; + unsigned char y : 4; + + constexpr bool operator==(S const &other) const { + return x == other.x && y == other.y; + } +}; + +constexpr S s{0xa, 0xb}; +static_assert(bit_cast>(s) == (LITTLE_END ? 0xba : 0xab)); +static_assert(bit_cast>(s) == (LITTLE_END + ? 0xba & 0x7f + : (0xab & 0xfe) >> 1)); + +static_assert(round_trip>(s) == s); + +struct R { + unsigned int r : 31; + unsigned int : 0; + unsigned int : 32; + constexpr bool operator==(R const &other) const { + return r == other.r; + } + }; +using T = bits<31, signed long long>; +constexpr R r{0x4ac0ffee}; +constexpr T t = bit_cast(r); +static_assert(t == ((0xFFFFFFFF8 << 28) | 0x4ac0ffee)); // sign extension + +static_assert(round_trip(r) == r); +static_assert(round_trip(t) == t); + + +/// The oversized bitfield is an error on Windows and not just a warning. +#if !defined(_WIN32) +struct U { + // expected-warning@+1 {{exceeds the width of its type}} + uint32_t trunc : 33; + uint32_t u : 31; + constexpr bool operator==(U const &other) const { + return trunc == other.trunc && u == other.u; + } +}; +struct V { + uint64_t notrunc : 32; + uint64_t : 1; + uint64_t v : 31; + constexpr bool operator==(V const &other) const { + return notrunc == other.notrunc && v == other.v; + } +}; + +constexpr U u{static_cast(~0), 0x4ac0ffee}; +constexpr V v = bit_cast(u); +static_assert(v.v == 0x4ac0ffee); + +static_assert(round_trip(u) == u); +static_assert(round_trip(v) == v); + +constexpr auto w = bit_cast>(u); +static_assert(w == (LITTLE_END + ? 0x4ac0ffee & 0xFFF + : (0x4ac0ffee & (0xFFF << (31 - 12))) >> (31-12) + )); +#endif + + +namespace NestedStructures { + struct J { + struct { + uint16_t k : 12; + } K; + struct { + uint16_t l : 4; + } L; + }; + + static_assert(sizeof(J) == 4); + constexpr J j = bit_cast(0x8c0ffee5); + + static_assert(j.K.k == (LITTLE_END ? 0xee5 : 0x8c0)); + static_assert(j.L.l == 0xf /* yay symmetry */); + static_assert(bit_cast>(j) == 0xf); + struct N { + bits<12, uint16_t> k; + uint16_t : 16; + }; + static_assert(bit_cast(j).k == j.K.k); + + struct M { + bits<4, uint16_t, 0> m[2]; + constexpr bool operator==(const M& rhs) const { + return m[0] == rhs.m[0] && m[1] == rhs.m[1]; + }; + }; + #if LITTLE_END == 1 + constexpr uint16_t want[2] = {0x5, 0xf}; + #else + constexpr uint16_t want[2] = {0x8000, 0xf000}; + #endif + + static_assert(bit_cast(j) == bit_cast(want)); +} + +namespace Enums { + // ensure we're packed into the top 2 bits + constexpr int pad = LITTLE_END ? 6 : 0; + struct X + { + char : pad; + enum class direction: char { left, right, up, down } direction : 2; + }; + + constexpr X x = { X::direction::down }; + static_assert(bit_cast>(x) == -1); + static_assert(bit_cast>(x) == 3); + static_assert( + bit_cast((unsigned char)0x40).direction == X::direction::right); +} diff --git a/clang/test/AST/ByteCode/builtin-bit-cast.cpp b/clang/test/AST/ByteCode/builtin-bit-cast.cpp index 0fecde59cd57c..e956675b18b85 100644 --- a/clang/test/AST/ByteCode/builtin-bit-cast.cpp +++ b/clang/test/AST/ByteCode/builtin-bit-cast.cpp @@ -186,72 +186,6 @@ namespace bitint { // ref-note {{initializer of 'IB' is not a constant expression}} } -namespace BitFields { - struct BitFields { - unsigned a : 2; - unsigned b : 30; - }; - - constexpr unsigned A = __builtin_bit_cast(unsigned, BitFields{3, 16}); // ref-error {{must be initialized by a constant expression}} \ - // ref-note {{not yet supported}} \ - // ref-note {{declared here}} - static_assert(A == (LITTLE_END ? 67 : 3221225488)); // ref-error {{not an integral constant expression}} \ - // ref-note {{initializer of 'A'}} - - - void bitfield_indeterminate() { - struct BF { unsigned char z : 2; }; - enum byte : unsigned char {}; - - constexpr BF bf = {0x3}; - /// Requires bitcasts to composite types. - // static_assert(bit_cast>(bf).bits == bf.z); - // static_assert(bit_cast(bf)); - -#if 0 - // static_assert(__builtin_bit_cast(byte, bf)); - - struct M { - // expected-note@+1 {{subobject declared here}} - unsigned char mem[sizeof(BF)]; - }; - // expected-error@+2 {{initialized by a constant expression}} - // expected-note@+1 {{not initialized}} - constexpr M m = bit_cast(bf); - - constexpr auto f = []() constexpr { - // bits<24, unsigned int, LITTLE_END ? 0 : 8> B = {0xc0ffee}; - constexpr struct { unsigned short b1; unsigned char b0; } B = {0xc0ff, 0xee}; - return bit_cast>(B); - }; - - static_assert(f()[0] + f()[1] + f()[2] == 0xc0 + 0xff + 0xee); - { - // expected-error@+2 {{initialized by a constant expression}} - // expected-note@+1 {{read of uninitialized object is not allowed in a constant expression}} - constexpr auto _bad = f()[3]; - } - - struct B { - unsigned short s0 : 8; - unsigned short s1 : 8; - std::byte b0 : 4; - std::byte b1 : 4; - std::byte b2 : 4; - }; - constexpr auto g = [f]() constexpr { - return bit_cast(f()); - }; - static_assert(g().s0 + g().s1 + g().b0 + g().b1 == 0xc0 + 0xff + 0xe + 0xe); - { - // expected-error@+2 {{initialized by a constant expression}} - // expected-note@+1 {{read of uninitialized object is not allowed in a constant expression}} - constexpr auto _bad = g().b2; - } -#endif - } -} - namespace Classes { class A { public: @@ -331,6 +265,21 @@ static_assert(check_round_trip(splice)); #endif +namespace Overread { + /// This used to crash becaus we were reading all elements of the + /// source array even though we should only be reading 1. + constexpr int a[] = {2,3, 4, 5}; + constexpr int b = __builtin_bit_cast(int, *(a + 1)); + static_assert(b == 3); + + struct S { + int a; + }; + constexpr S ss[] = {{1},{2}}; + constexpr int c = __builtin_bit_cast(int, *(ss + 1)); + static_assert(c == 2); +} + /// --------------------------------------------------------------------------- /// From here on, it's things copied from test/SemaCXX/constexpr-builtin-bit.cast.cpp @@ -510,27 +459,6 @@ static_assert(bit_cast(test_vector) == (LITTLE_END static_assert(check_round_trip(0xCAFEBABE0C05FEFEULL), ""); static_assert(check_round_trip(0xCAFEBABE0C05FEFEULL), ""); -typedef bool bool8 __attribute__((ext_vector_type(8))); -typedef bool bool9 __attribute__((ext_vector_type(9))); -typedef bool bool16 __attribute__((ext_vector_type(16))); -typedef bool bool17 __attribute__((ext_vector_type(17))); -typedef bool bool32 __attribute__((ext_vector_type(32))); -typedef bool bool128 __attribute__((ext_vector_type(128))); - -static_assert(bit_cast(bool8{1,0,1,0,1,0,1,0}) == (LITTLE_END ? 0x55 : 0xAA), ""); -constexpr bool8 b8 = __builtin_bit_cast(bool8, 0x55); // both-error {{'__builtin_bit_cast' source type 'int' does not match destination type 'bool8' (vector of 8 'bool' values) (4 vs 1 bytes)}} -#if 0 -static_assert(check_round_trip(static_cast(0)), ""); -static_assert(check_round_trip(static_cast(1)), ""); -static_assert(check_round_trip(static_cast(0x55)), ""); - -static_assert(bit_cast(bool16{1,1,1,1,1,0,0,0, 1,1,1,1,0,1,0,0}) == (LITTLE_END ? 0x2F1F : 0xF8F4), ""); - -static_assert(check_round_trip(static_cast(0xCAFE)), ""); -static_assert(check_round_trip(static_cast(0xCAFEBABE)), ""); -static_assert(check_round_trip(static_cast<__int128_t>(0xCAFEBABE0C05FEFEULL)), ""); -#endif - #if 0 // expected-error@+2 {{constexpr variable 'bad_bool9_to_short' must be initialized by a constant expression}} // expected-note@+1 {{bit_cast involving type 'bool __attribute__((ext_vector_type(9)))' (vector of 9 'bool' values) is not allowed in a constant expression; element size 1 * element count 9 is not a multiple of the byte size 8}} @@ -559,3 +487,20 @@ namespace test_complex { constexpr double D = __builtin_bit_cast(double, test_float_complex); constexpr int M = __builtin_bit_cast(int, test_int_complex); // both-error {{size of '__builtin_bit_cast' source type 'const _Complex unsigned int' does not match destination type 'int' (8 vs 4 bytes)}} } + + +namespace OversizedBitField { +#if defined(_WIN32) + /// This is an error (not just a warning) on Windows and the field ends up with a size of 1 instead of 4. +#else + typedef unsigned __INT16_TYPE__ uint16_t; + typedef unsigned __INT32_TYPE__ uint32_t; + struct S { + uint16_t a : 20; // both-warning {{exceeds the width of its type}} + }; + + static_assert(sizeof(S) == 4); + static_assert(__builtin_bit_cast(S, (uint32_t)32).a == (LITTLE_END ? 32 : 0)); // ref-error {{not an integral constant expression}} \ + // ref-note {{constexpr bit_cast involving bit-field is not yet supported}} +#endif +} diff --git a/clang/unittests/AST/ByteCode/BitcastBuffer.cpp b/clang/unittests/AST/ByteCode/BitcastBuffer.cpp new file mode 100644 index 0000000000000..02c38a2201363 --- /dev/null +++ b/clang/unittests/AST/ByteCode/BitcastBuffer.cpp @@ -0,0 +1,87 @@ +#include "../../../lib/AST/ByteCode/BitcastBuffer.h" +#include "clang/AST/ASTContext.h" +#include "gtest/gtest.h" +#include +#include +#include +#include +#include + +using namespace clang; +using namespace clang::interp; + +TEST(BitcastBuffer, PushData) { + BitcastBuffer Buff1(Bytes(sizeof(int)).toBits()); + + const unsigned V = 0xCAFEBABE; + Bits VSize = Bytes(sizeof(V)).toBits(); + std::byte Data[sizeof(V)]; + std::memcpy(Data, &V, sizeof(V)); + + Endian HostEndianness = + llvm::sys::IsLittleEndianHost ? Endian::Little : Endian::Big; + + Buff1.pushData(Data, Bits::zero(), VSize, HostEndianness); + + // The buffer is in host-endianness. + if (llvm::sys::IsLittleEndianHost) { + ASSERT_EQ(Buff1.Data[0], std::byte{0xbe}); + ASSERT_EQ(Buff1.Data[1], std::byte{0xba}); + ASSERT_EQ(Buff1.Data[2], std::byte{0xfe}); + ASSERT_EQ(Buff1.Data[3], std::byte{0xca}); + } else { + ASSERT_EQ(Buff1.Data[0], std::byte{0xca}); + ASSERT_EQ(Buff1.Data[1], std::byte{0xfe}); + ASSERT_EQ(Buff1.Data[2], std::byte{0xba}); + ASSERT_EQ(Buff1.Data[3], std::byte{0xbe}); + } + + { + unsigned V2; + auto D = Buff1.copyBits(Bits::zero(), VSize, VSize, Endian::Little); + std::memcpy(&V2, D.get(), sizeof(V)); + ASSERT_EQ(V, V2); + + D = Buff1.copyBits(Bits::zero(), VSize, VSize, Endian::Big); + std::memcpy(&V2, D.get(), sizeof(V)); + ASSERT_EQ(V, V2); + } + + BitcastBuffer Buff2(Bytes(sizeof(int)).toBits()); + { + short s1 = 0xCAFE; + short s2 = 0xBABE; + std::byte sdata[2]; + + std::memcpy(sdata, &s1, sizeof(s1)); + Buff2.pushData(sdata, Bits::zero(), Bits(sizeof(s1) * 8), HostEndianness); + std::memcpy(sdata, &s2, sizeof(s2)); + Buff2.pushData(sdata, Bits(sizeof(s1) * 8), Bits(sizeof(s2) * 8), + HostEndianness); + } + + if (llvm::sys::IsLittleEndianHost) { + ASSERT_EQ(Buff2.Data[0], std::byte{0xfe}); + ASSERT_EQ(Buff2.Data[1], std::byte{0xca}); + ASSERT_EQ(Buff2.Data[2], std::byte{0xbe}); + ASSERT_EQ(Buff2.Data[3], std::byte{0xba}); + } else { + ASSERT_EQ(Buff2.Data[0], std::byte{0xba}); + ASSERT_EQ(Buff2.Data[1], std::byte{0xbe}); + ASSERT_EQ(Buff2.Data[2], std::byte{0xca}); + ASSERT_EQ(Buff2.Data[3], std::byte{0xfe}); + } + + { + unsigned V; + auto D = Buff2.copyBits(Bits::zero(), Bits(sizeof(V) * 8), + Bits(sizeof(V) * 8), Endian::Little); + std::memcpy(&V, D.get(), sizeof(V)); + ASSERT_EQ(V, 0xBABECAFE); + + D = Buff2.copyBits(Bits::zero(), Bits(sizeof(V) * 8), Bits(sizeof(V) * 8), + Endian::Big); + std::memcpy(&V, D.get(), sizeof(V)); + ASSERT_EQ(V, 0xBABECAFE); + } +} diff --git a/clang/unittests/AST/ByteCode/CMakeLists.txt b/clang/unittests/AST/ByteCode/CMakeLists.txt index ea727cdd4412b..b862fb4834fbd 100644 --- a/clang/unittests/AST/ByteCode/CMakeLists.txt +++ b/clang/unittests/AST/ByteCode/CMakeLists.txt @@ -1,4 +1,5 @@ add_clang_unittest(InterpTests + BitcastBuffer.cpp Descriptor.cpp toAPValue.cpp ) From 8c46413f343d0a5b8db48d958890b9038f03b70d Mon Sep 17 00:00:00 2001 From: Fraser Cormack Date: Wed, 4 Dec 2024 10:56:55 +0000 Subject: [PATCH 019/593] [vim] Improve iskeyword for LLVM IR (#117905) This patch sets the 'iskeyword' variable to characters found in LLVM IR identifiers. Keywords are used in many places in vim, most notably being treated as word boundaries for commands like 'w' and '*'. The aim with this is to improve the navigability and editability of LLVM IR files as now one is able to: skip over entire identifiers with motions (e.g., `w/e/b`); yank/delete whole identifiers (e.g., `diw`); highlight/search for the identifier under the cursor (`*`), etc. More complicated LLVM identifiers including quotation marks are not supported. The 'iskeyword' variable is just a list of characters, not a regex, and including quotation marks and all the characters permitted in quoted identifiers would expand the scope to almost everything and become less usable. These types of identifiers are rare by comparison. Note that this does change how words are considered across the entire LLVM IR file, so including strings, comments, names, etc. Given that the majority of editing/navigating LLVM IR is working with and across values, this is arguably a worthwhile trade-off. --- llvm/utils/vim/ftplugin/llvm.vim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/llvm/utils/vim/ftplugin/llvm.vim b/llvm/utils/vim/ftplugin/llvm.vim index 55315159c18bc..4f38c47552d55 100644 --- a/llvm/utils/vim/ftplugin/llvm.vim +++ b/llvm/utils/vim/ftplugin/llvm.vim @@ -11,3 +11,11 @@ setlocal softtabstop=2 shiftwidth=2 setlocal expandtab setlocal comments+=:; setlocal commentstring=;\ %s +" We treat sequences of the following characters as forming 'keywords', with +" the aim of easing movement around LLVM identifiers: +" * identifier prefixes: '%' and '@' (@-@) +" * all characters where isalpha() returns TRUE (@) +" * the digits 0-9 (48-57) +" * other characters that may form identifiers: '_', '.', '-', '$' +" Comment this out to restore the default behaviour +setlocal iskeyword=%,@-@,@,48-57,_,.,-,$ From 4d70f5fe130d129efc0157342fb027f7b7b3bc22 Mon Sep 17 00:00:00 2001 From: LLVM GN Syncbot Date: Wed, 4 Dec 2024 11:04:05 +0000 Subject: [PATCH 020/593] [gn build] Port 12ca72ba7f11 --- llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn | 1 + llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn | 1 + 2 files changed, 2 insertions(+) diff --git a/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn b/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn index 6bfdeedfacd26..db2ee2e41d2bd 100644 --- a/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/lib/AST/BUILD.gn @@ -62,6 +62,7 @@ static_library("AST") { "AttrDocTable.cpp", "AttrImpl.cpp", "Availability.cpp", + "ByteCode/BitcastBuffer.cpp", "ByteCode/ByteCodeEmitter.cpp", "ByteCode/Compiler.cpp", "ByteCode/Context.cpp", diff --git a/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn b/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn index fcdb9a5b1aeb2..04c646b059ece 100644 --- a/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/unittests/AST/ByteCode/BUILD.gn @@ -10,6 +10,7 @@ unittest("InterpTests") { "//clang/lib/Tooling", ] sources = [ + "BitcastBuffer.cpp", "Descriptor.cpp", "toAPValue.cpp", ] From 04b26f0eb7c3822fd5349b31e5ad544ea5a7929e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Wed, 4 Dec 2024 11:27:37 +0000 Subject: [PATCH 021/593] [offload] Standalone build fixes (#118173) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A fair number of fixes to get standalone builds of offload working — mostly copying missing bits from openmp. It's almost ready — I still need to figure out why some of the tsts aren't linking to the right libraries. --- offload/CMakeLists.txt | 24 +++++++++++++++++++ offload/cmake/OpenMPTesting.cmake | 15 ++---------- offload/plugins-nextgen/CMakeLists.txt | 2 ++ offload/plugins-nextgen/amdgpu/CMakeLists.txt | 3 +-- offload/plugins-nextgen/common/CMakeLists.txt | 3 +-- offload/test/CMakeLists.txt | 11 ++++++--- 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt index e24f0faa91211..2d2413688183b 100644 --- a/offload/CMakeLists.txt +++ b/offload/CMakeLists.txt @@ -64,6 +64,9 @@ if (OPENMP_STANDALONE_BUILD) # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR. set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}") + # Used by llvm_add_tool() and tests. + set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}) + # Group test settings. set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING "C compiler to use for testing OpenMP runtime libraries.") @@ -129,6 +132,7 @@ include(LibomptargetGetDependencies) # Set up testing infrastructure. include(OpenMPTesting) +include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-Werror=global-constructors OFFLOAD_HAVE_WERROR_CTOR) # LLVM source tree is required at build time for libomptarget @@ -286,6 +290,26 @@ if(OPENMP_STANDALONE_BUILD) ${LLVM_LIBRARY_DIRS} REQUIRED ) + + find_path ( + LIBOMP_INCLUDE_DIR + NAMES + omp.h + HINTS + ${COMPILER_RESOURCE_DIR}/include + ${CMAKE_INSTALL_PREFIX}/include + ) + + get_filename_component(LIBOMP_LIBRARY_DIR ${LIBOMP_STANDALONE} DIRECTORY) + + set(OPENMP_TEST_FLAGS "" CACHE STRING + "Extra compiler flags to send to the test compiler.") + set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING + "OpenMP compiler flag to use for testing OpenMP runtime libraries.") + set(LIBOMPTARGET_OPENMP_HEADER_FOLDER "${LIBOMP_INCLUDE_DIR}" CACHE STRING + "Path to folder containing omp.h") + set(LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER "${LIBOMP_LIBRARY_DIR}" CACHE STRING + "Path to folder containing libomp.so, and libLLVMSupport.so with profiling enabled") endif() macro(pythonize_bool var) diff --git a/offload/cmake/OpenMPTesting.cmake b/offload/cmake/OpenMPTesting.cmake index 6609d6301d0f9..a808167eb6bb6 100644 --- a/offload/cmake/OpenMPTesting.cmake +++ b/offload/cmake/OpenMPTesting.cmake @@ -37,17 +37,6 @@ function(find_standalone_test_dependencies) return() endif() - find_program(OFFLOAD_DEVICE_INFO_EXECUTABLE - NAMES llvm-offload-device-info - PATHS ${OPENMP_LLVM_TOOLS_DIR}) - if (NOT OFFLOAD_DEVICE_INFO_EXECUTABLE) - message(STATUS "Cannot find 'llvm-offload-device-info'.") - message(STATUS "Please put 'not' in your PATH, set OFFLOAD_DEVICE_INFO_EXECUTABLE to its full path, or point OPENMP_LLVM_TOOLS_DIR to its directory.") - message(WARNING "The check targets will not be available!") - set(ENABLE_CHECK_TARGETS FALSE PARENT_SCOPE) - return() - endif() - find_program(OPENMP_NOT_EXECUTABLE NAMES not PATHS ${OPENMP_LLVM_TOOLS_DIR}) @@ -82,8 +71,8 @@ else() set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck) endif() set(OPENMP_NOT_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/not) - set(OFFLOAD_DEVICE_INFO_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-offload-device-info) endif() +set(OFFLOAD_DEVICE_INFO_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-offload-device-info) # Macro to extract information about compiler from file. (no own scope) macro(extract_test_compiler_information lang file) @@ -136,7 +125,7 @@ if (${OPENMP_STANDALONE_BUILD}) # project is built which is too late for detecting the compiler... file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DetectTestCompiler) execute_process( - COMMAND ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/DetectTestCompiler + COMMAND ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ${CMAKE_CURRENT_SOURCE_DIR}/../openmp/cmake/DetectTestCompiler -DCMAKE_C_COMPILER=${OPENMP_TEST_C_COMPILER} -DCMAKE_CXX_COMPILER=${OPENMP_TEST_CXX_COMPILER} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DetectTestCompiler diff --git a/offload/plugins-nextgen/CMakeLists.txt b/offload/plugins-nextgen/CMakeLists.txt index d31bf557669ea..9b5b12bea7142 100644 --- a/offload/plugins-nextgen/CMakeLists.txt +++ b/offload/plugins-nextgen/CMakeLists.txt @@ -12,6 +12,7 @@ function(add_target_library target_name lib_name) CodeGen Core Extensions + FrontendOffloading InstCombine Instrumentation IPO @@ -20,6 +21,7 @@ function(add_target_library target_name lib_name) MC Object Passes + ProfileData Remarks ScalarOpts Support diff --git a/offload/plugins-nextgen/amdgpu/CMakeLists.txt b/offload/plugins-nextgen/amdgpu/CMakeLists.txt index b40c62d43226f..47cd2feefc728 100644 --- a/offload/plugins-nextgen/amdgpu/CMakeLists.txt +++ b/offload/plugins-nextgen/amdgpu/CMakeLists.txt @@ -10,12 +10,11 @@ target_include_directories(omptarget.rtl.amdgpu PRIVATE if(hsa-runtime64_FOUND AND NOT "amdgpu" IN_LIST LIBOMPTARGET_DLOPEN_PLUGINS) message(STATUS "Building AMDGPU plugin linked against libhsa") - target_link_libraries(omptarget.rtl.amdgpu PRIVATE hsa-runtime64::hsa-runtime64 LLVMFrontendOffloading) + target_link_libraries(omptarget.rtl.amdgpu PRIVATE hsa-runtime64::hsa-runtime64) else() message(STATUS "Building AMDGPU plugin for dlopened libhsa") target_include_directories(omptarget.rtl.amdgpu PRIVATE dynamic_hsa) target_sources(omptarget.rtl.amdgpu PRIVATE dynamic_hsa/hsa.cpp) - target_link_libraries(omptarget.rtl.amdgpu PRIVATE LLVMFrontendOffloading) endif() # Configure testing for the AMDGPU plugin. We will build tests if we could a diff --git a/offload/plugins-nextgen/common/CMakeLists.txt b/offload/plugins-nextgen/common/CMakeLists.txt index f9598a1718b3e..14c48f6ace971 100644 --- a/offload/plugins-nextgen/common/CMakeLists.txt +++ b/offload/plugins-nextgen/common/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(PluginCommon OBJECT src/RPC.cpp src/Utils/ELF.cpp ) -add_dependencies(PluginCommon intrinsics_gen LLVMProfileData) +add_dependencies(PluginCommon intrinsics_gen) # Only enable JIT for those targets that LLVM can support. set(supported_jit_targets AMDGPU NVPTX) @@ -44,7 +44,6 @@ target_compile_definitions(PluginCommon PRIVATE target_compile_options(PluginCommon PUBLIC ${offload_compile_flags}) target_link_options(PluginCommon PUBLIC ${offload_link_flags}) -target_link_libraries(PluginCommon PRIVATE LLVMProfileData) target_include_directories(PluginCommon PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include diff --git a/offload/test/CMakeLists.txt b/offload/test/CMakeLists.txt index 5a6f637b57fa7..8a827e0a625ef 100644 --- a/offload/test/CMakeLists.txt +++ b/offload/test/CMakeLists.txt @@ -28,6 +28,11 @@ if(CUDAToolkit_FOUND) get_filename_component(CUDA_LIBDIR "${CUDA_cudart_static_LIBRARY}" DIRECTORY) endif() +set(OMP_DEPEND) +if(TARGET omp) + set(OMP_DEPEND omp) +endif() + string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}") foreach(CURRENT_TARGET IN LISTS SYSTEM_TARGETS) string(STRIP "${CURRENT_TARGET}" CURRENT_TARGET) @@ -35,7 +40,7 @@ foreach(CURRENT_TARGET IN LISTS SYSTEM_TARGETS) add_offload_testsuite(check-libomptarget-${CURRENT_TARGET} "Running libomptarget tests" ${CMAKE_CURRENT_BINARY_DIR}/${CURRENT_TARGET} - DEPENDS omptarget omp ${LIBOMPTARGET_TESTED_PLUGINS} + DEPENDS omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS} ARGS ${LIBOMPTARGET_LIT_ARG_LIST}) list(APPEND LIBOMPTARGET_LIT_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CURRENT_TARGET}) @@ -49,12 +54,12 @@ add_offload_testsuite(check-libomptarget "Running libomptarget tests" ${LIBOMPTARGET_LIT_TESTSUITES} EXCLUDE_FROM_CHECK_ALL - DEPENDS omptarget omp ${LIBOMPTARGET_TESTED_PLUGINS} + DEPENDS llvm-offload-device-info omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS} ARGS ${LIBOMPTARGET_LIT_ARG_LIST}) add_offload_testsuite(check-offload "Running libomptarget tests" ${LIBOMPTARGET_LIT_TESTSUITES} EXCLUDE_FROM_CHECK_ALL - DEPENDS omptarget omp ${LIBOMPTARGET_TESTED_PLUGINS} + DEPENDS llvm-offload-device-info omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS} ARGS ${LIBOMPTARGET_LIT_ARG_LIST}) From 0adab6b1af5b1874099b1e97fdcea2ce5020d79a Mon Sep 17 00:00:00 2001 From: SpencerAbson Date: Wed, 4 Dec 2024 11:32:05 +0000 Subject: [PATCH 022/593] [AArch64][Clang] Define __ARM_NEON_SVE_BRIDGE unconditionally (#118272) The meaning of `__ARM_NEON_SVE_BRIDGE` was changed here: https://github.com/ARM-software/acle/pull/362 Such that it should be defined to `1` if the `arm_neon_sve_bridge.h` header file is available, which is the case for Clang. --- clang/lib/Basic/Targets/AArch64.cpp | 6 +++--- clang/test/Preprocessor/aarch64-target-features.c | 1 + clang/test/Preprocessor/init-aarch64.c | 1 + .../acle_neon_sve_bridge.cpp | 15 +++++++++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 clang/test/Sema/aarch64-sve-intrinsics/acle_neon_sve_bridge.cpp diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp index 4efc1841c836d..b7d374c67f33e 100644 --- a/clang/lib/Basic/Targets/AArch64.cpp +++ b/clang/lib/Basic/Targets/AArch64.cpp @@ -447,6 +447,9 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__ARM_FP16_FORMAT_IEEE", "1"); Builder.defineMacro("__ARM_FP16_ARGS", "1"); + // Clang supports arm_neon_sve_bridge.h + Builder.defineMacro("__ARM_NEON_SVE_BRIDGE", "1"); + if (Opts.UnsafeFPMath) Builder.defineMacro("__ARM_FP_FAST", "1"); @@ -464,9 +467,6 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts, if (FPU & SveMode) Builder.defineMacro("__ARM_FEATURE_SVE", "1"); - if ((FPU & NeonMode) && (FPU & SveMode)) - Builder.defineMacro("__ARM_NEON_SVE_BRIDGE", "1"); - if (HasSVE2) Builder.defineMacro("__ARM_FEATURE_SVE2", "1"); diff --git a/clang/test/Preprocessor/aarch64-target-features.c b/clang/test/Preprocessor/aarch64-target-features.c index 037a3e186ee55..86265f630296c 100644 --- a/clang/test/Preprocessor/aarch64-target-features.c +++ b/clang/test/Preprocessor/aarch64-target-features.c @@ -39,6 +39,7 @@ // CHECK-NOT: __ARM_FP_FAST 1 // CHECK: __ARM_NEON 1 // CHECK: __ARM_NEON_FP 0xE +// CHECK: __ARM_NEON_SVE_BRIDGE 1 // CHECK: __ARM_PCS_AAPCS64 1 // CHECK-NOT: __ARM_PCS 1 // CHECK-NOT: __ARM_PCS_VFP 1 diff --git a/clang/test/Preprocessor/init-aarch64.c b/clang/test/Preprocessor/init-aarch64.c index 8ee6c6ba60af4..3d2f4b83abcb8 100644 --- a/clang/test/Preprocessor/init-aarch64.c +++ b/clang/test/Preprocessor/init-aarch64.c @@ -30,6 +30,7 @@ // AARCH64-NEXT: #define __ARM_FP 0xE // AARCH64-NEXT: #define __ARM_FP16_ARGS 1 // AARCH64-NEXT: #define __ARM_FP16_FORMAT_IEEE 1 +// AARCH64-NEXT: #define __ARM_NEON_SVE_BRIDGE 1 // AARCH64-NEXT: #define __ARM_PCS_AAPCS64 1 // AARCH64-NEXT: #define __ARM_SIZEOF_MINIMAL_ENUM 4 // AARCH64-NEXT: #define __ARM_SIZEOF_WCHAR_T 4 diff --git a/clang/test/Sema/aarch64-sve-intrinsics/acle_neon_sve_bridge.cpp b/clang/test/Sema/aarch64-sve-intrinsics/acle_neon_sve_bridge.cpp new file mode 100644 index 0000000000000..a3f3764939156 --- /dev/null +++ b/clang/test/Sema/aarch64-sve-intrinsics/acle_neon_sve_bridge.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -verify -emit-llvm -o - %s +// REQUIRES: aarch64-registered-target + +// Test that we can use __ARM_NEON_SVE_BRIDGE to guard to inclusion of arm_neon_sve_bridge.h, +// and use the associated intrinsics via a target() attribute. + +// expected-no-diagnostics + +#ifdef __ARM_NEON_SVE_BRIDGE +#include +#endif + +uint32x4_t __attribute__((target("+sve"))) foo(svuint32_t a) { + return svget_neonq_u32(a); +} \ No newline at end of file From 041e5c96c4bd247a3dd6099f49143ee66d9205d8 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 4 Dec 2024 11:43:47 +0000 Subject: [PATCH 023/593] [X86] getMemoryOpCost - ensure we pass through OpInfo / Instruction args to base getMemoryOpCost calls Nothing really uses these yet, but we shouldn't be losing the info. We can also pass on the OpInfo arg to the getMemoryOpCost constant load call to indicate if its constant/uniform/pow2 etc. Prep cleanup for #111126 --- llvm/lib/Target/X86/X86TargetTransformInfo.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp index dee48de37a0ae..3b424bbb53e5b 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp @@ -5147,7 +5147,7 @@ InstructionCost X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, // Type legalization can't handle structs if (TLI->getValueType(DL, Src, true) == MVT::Other) return BaseT::getMemoryOpCost(Opcode, Src, Alignment, AddressSpace, - CostKind); + CostKind, OpInfo, I); // Legalize the type. std::pair LT = getTypeLegalizationCost(Src); @@ -5159,7 +5159,7 @@ InstructionCost X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, // Add a cost for constant load to vector. if (Opcode == Instruction::Store && OpInfo.isConstant()) Cost += getMemoryOpCost(Instruction::Load, Src, DL.getABITypeAlign(Src), - /*AddressSpace=*/0, CostKind); + /*AddressSpace=*/0, CostKind, OpInfo); // Handle the simple case of non-vectors. // NOTE: this assumes that legalization never creates vector from scalars! @@ -5189,7 +5189,7 @@ InstructionCost X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, if (XMMBits % EltTyBits != 0) // Vector size must be a multiple of the element size. I.e. no padding. return BaseT::getMemoryOpCost(Opcode, Src, Alignment, AddressSpace, - CostKind); + CostKind, OpInfo, I); const int NumEltPerXMM = XMMBits / EltTyBits; auto *XMMVecTy = FixedVectorType::get(EltTy, NumEltPerXMM); @@ -5200,7 +5200,7 @@ InstructionCost X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, if ((8 * CurrOpSizeBytes) % EltTyBits != 0) // Vector size must be a multiple of the element size. I.e. no padding. return BaseT::getMemoryOpCost(Opcode, Src, Alignment, AddressSpace, - CostKind); + CostKind, OpInfo, I); int CurrNumEltPerOp = (8 * CurrOpSizeBytes) / EltTyBits; assert(CurrOpSizeBytes > 0 && CurrNumEltPerOp > 0 && "How'd we get here?"); From 148fdc519cd25b36db9da61a6c6cabe86268dc58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Sch=C3=BCtt?= Date: Wed, 4 Dec 2024 12:53:15 +0100 Subject: [PATCH 024/593] [GlobalISel] Add G_ABDS and G_ABDU instructions (#118122) The DAG has the same instructions: the signed and unsigned absolute difference of it's input. For AArch64, they map to uabd and sabd for Neon and SVE. The Neon and SVE instructions will require custom patterns. They are pseudo opcodes and are not imported by the IRTranslator. We need combines to create them. PowerPC, ARM, and AArch64 have native instructions. /// i.e trunc(abs(sext(Op0) - sext(Op1))) becomes abds(Op0, Op1) /// or trunc(abs(zext(Op0) - zext(Op1))) becomes abdu(Op0, Op1) For GlobalISel, we are going to write the combines in MIR patterns. see: llvm/test/CodeGen/AArch64/abd-combine.ll - [ ] combine into abd - [ ] legalize and add td patterns --- llvm/docs/GlobalISel/GenericOpcode.rst | 7 ++++ .../CodeGen/GlobalISel/MachineIRBuilder.h | 28 ++++++++++++++++ llvm/include/llvm/Support/TargetOpcodes.def | 6 ++++ llvm/include/llvm/Target/GenericOpcodes.td | 16 +++++++++ llvm/lib/CodeGen/MachineVerifier.cpp | 25 ++++++++++++++ .../GlobalISel/legalizer-info-validation.mir | 8 +++++ .../GlobalISel/legalizer-info-validation.mir | 8 +++++ llvm/test/MachineVerifier/test_abd_su.mir | 33 +++++++++++++++++++ llvm/test/TableGen/GlobalISelEmitter.td | 2 +- 9 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 llvm/test/MachineVerifier/test_abd_su.mir diff --git a/llvm/docs/GlobalISel/GenericOpcode.rst b/llvm/docs/GlobalISel/GenericOpcode.rst index 076dc7fa93e56..718f99373d28c 100644 --- a/llvm/docs/GlobalISel/GenericOpcode.rst +++ b/llvm/docs/GlobalISel/GenericOpcode.rst @@ -474,6 +474,13 @@ undefined. %2:_(s33) = G_CTLZ_ZERO_UNDEF %1 %2:_(s33) = G_CTTZ_ZERO_UNDEF %1 +Compute the absolute difference (signed and unsigned), e.g. abs(x-y). + +.. code-block:: none + + %0:_(s33) = G_ABDS %2, %3 + %1:_(s33) = G_ABDU %4, %5 + Floating Point Operations ------------------------- diff --git a/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h b/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h index 3516065f9b6cb..fac7fa6417265 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h @@ -1767,6 +1767,34 @@ class MachineIRBuilder { return buildInstr(TargetOpcode::G_MUL, {Dst}, {Src0, Src1}, Flags); } + /// Build and insert \p Res = G_ABDS \p Op0, \p Op1 + /// + /// G_ABDS return the signed absolute difference of \p Op0 and \p Op1. + /// + /// \pre setBasicBlock or setMI must have been called. + /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers + /// with the same (scalar or vector) type). + /// + /// \return a MachineInstrBuilder for the newly created instruction. + MachineInstrBuilder buildAbds(const DstOp &Dst, const SrcOp &Src0, + const SrcOp &Src1) { + return buildInstr(TargetOpcode::G_ABDS, {Dst}, {Src0, Src1}); + } + + /// Build and insert \p Res = G_ABDU \p Op0, \p Op1 + /// + /// G_ABDU return the unsigned absolute difference of \p Op0 and \p Op1. + /// + /// \pre setBasicBlock or setMI must have been called. + /// \pre \p Res, \p Op0 and \p Op1 must be generic virtual registers + /// with the same (scalar or vector) type). + /// + /// \return a MachineInstrBuilder for the newly created instruction. + MachineInstrBuilder buildAbdu(const DstOp &Dst, const SrcOp &Src0, + const SrcOp &Src1) { + return buildInstr(TargetOpcode::G_ABDU, {Dst}, {Src0, Src1}); + } + MachineInstrBuilder buildUMulH(const DstOp &Dst, const SrcOp &Src0, const SrcOp &Src1, std::optional Flags = std::nullopt) { diff --git a/llvm/include/llvm/Support/TargetOpcodes.def b/llvm/include/llvm/Support/TargetOpcodes.def index 17987935ed3cf..5ef3707b81fe9 100644 --- a/llvm/include/llvm/Support/TargetOpcodes.def +++ b/llvm/include/llvm/Support/TargetOpcodes.def @@ -289,6 +289,12 @@ HANDLE_TARGET_OPCODE(G_OR) /// Generic bitwise exclusive-or instruction. HANDLE_TARGET_OPCODE(G_XOR) +/// Generic absolute difference signed instruction. +HANDLE_TARGET_OPCODE(G_ABDS) + +/// Generic absolute difference unsigned instruction. +HANDLE_TARGET_OPCODE(G_ABDU) + HANDLE_TARGET_OPCODE(G_IMPLICIT_DEF) diff --git a/llvm/include/llvm/Target/GenericOpcodes.td b/llvm/include/llvm/Target/GenericOpcodes.td index 60606db078b37..c8f91cd0de597 100644 --- a/llvm/include/llvm/Target/GenericOpcodes.td +++ b/llvm/include/llvm/Target/GenericOpcodes.td @@ -386,6 +386,22 @@ def G_ASHR : GenericInstruction { let hasSideEffects = false; } +// Generic absolute difference signed. +def G_ABDS : GenericInstruction { + let OutOperandList = (outs type0:$dst); + let InOperandList = (ins type0:$src1, type0:$src2); + let hasSideEffects = false; + let isCommutable = true; +} + +// Generic absolute difference unsigned. +def G_ABDU : GenericInstruction { + let OutOperandList = (outs type0:$dst); + let InOperandList = (ins type0:$src1, type0:$src2); + let hasSideEffects = false; + let isCommutable = true; +} + /// Funnel 'double' shifts take 3 operands, 2 inputs and the shift amount. /// fshl(X,Y,Z): (X << (Z % bitwidth)) | (Y >> (bitwidth - (Z % bitwidth))) def G_FSHL : GenericInstruction { diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp index b08a93ae9a6d5..8e64e4055665c 100644 --- a/llvm/lib/CodeGen/MachineVerifier.cpp +++ b/llvm/lib/CodeGen/MachineVerifier.cpp @@ -1585,6 +1585,31 @@ void MachineVerifier::verifyPreISelGenericInstruction(const MachineInstr *MI) { break; } + case TargetOpcode::G_ABDS: + case TargetOpcode::G_ABDU: { + LLT DstTy = MRI->getType(MI->getOperand(0).getReg()); + LLT SrcTy = MRI->getType(MI->getOperand(1).getReg()); + LLT SrcTy2 = MRI->getType(MI->getOperand(2).getReg()); + + if ((DstTy.isVector() != SrcTy.isVector()) || + (DstTy.isVector() && + DstTy.getElementCount() != SrcTy.getElementCount())) { + report("Generic vector abds/abdu must preserve number of lanes", MI); + break; + } + + if (SrcTy != SrcTy2) { + report("Generic abds/abdu must have same input types", MI); + break; + } + + if (DstTy != SrcTy) { + report("Generic abds/abdu must have same input and output types", MI); + break; + } + + break; + } case TargetOpcode::G_SCMP: case TargetOpcode::G_UCMP: { LLT DstTy = MRI->getType(MI->getOperand(0).getReg()); diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir index d35bface7cb48..7c9c958b5a818 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir @@ -70,6 +70,14 @@ # DEBUG-NEXT: .. the first uncovered type index: 1, OK # DEBUG-NEXT: .. the first uncovered imm index: 0, OK # +# DEBUG-NEXT: G_ABDS (opcode 65): 1 type index, 0 imm indices +# DEBUG-NEXT:.. type index coverage check SKIPPED: no rules defined +# DEBUG-NEXT:.. imm index coverage check SKIPPED: no rules defined +# +# DEBUG-NEXT:G_ABDU (opcode 66): 1 type index, 0 imm indices +# DEBUG-NEXT:.. type index coverage check SKIPPED: no rules defined +# DEBUG-NEXT:.. imm index coverage check SKIPPED: no rules defined +# # DEBUG-NEXT: G_IMPLICIT_DEF (opcode {{[0-9]+}}): 1 type index, 0 imm indices # DEBUG-NEXT: .. the first uncovered type index: {{[0-9]+}}, OK # DEBUG-NEXT: .. the first uncovered imm index: {{[0-9]+}}, OK diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer-info-validation.mir b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer-info-validation.mir index 0d9d539a1a80e..d8711fb940a0d 100644 --- a/llvm/test/CodeGen/RISCV/GlobalISel/legalizer-info-validation.mir +++ b/llvm/test/CodeGen/RISCV/GlobalISel/legalizer-info-validation.mir @@ -73,6 +73,14 @@ # DEBUG-NEXT: .. type index coverage check SKIPPED: user-defined predicate detected # DEBUG-NEXT: .. imm index coverage check SKIPPED: user-defined predicate detected # +# DEBUG-NEXT: G_ABDS (opcode 65): 1 type index, 0 imm indices +# DEBUG-NEXT:.. type index coverage check SKIPPED: no rules defined +# DEBUG-NEXT:.. imm index coverage check SKIPPED: no rules defined +# +# DEBUG-NEXT:G_ABDU (opcode 66): 1 type index, 0 imm indices +# DEBUG-NEXT:.. type index coverage check SKIPPED: no rules defined +# DEBUG-NEXT:.. imm index coverage check SKIPPED: no rules defined +# # DEBUG-NEXT: G_IMPLICIT_DEF (opcode {{[0-9]+}}): 1 type index, 0 imm indices # DEBUG-NEXT: .. type index coverage check SKIPPED: user-defined predicate detected # DEBUG-NEXT: .. imm index coverage check SKIPPED: user-defined predicate detected diff --git a/llvm/test/MachineVerifier/test_abd_su.mir b/llvm/test/MachineVerifier/test_abd_su.mir new file mode 100644 index 0000000000000..4f9272f238a7d --- /dev/null +++ b/llvm/test/MachineVerifier/test_abd_su.mir @@ -0,0 +1,33 @@ +# RUN: not --crash llc -verify-machineinstrs -mtriple=arm64 -run-pass none -o /dev/null %s 2>&1 | FileCheck %s +# REQUIRES: aarch64-registered-target + +--- +name: g_abd_su +body: | + bb.0: + + %2:_(p0) = G_IMPLICIT_DEF + %3:_(p0) = G_IMPLICIT_DEF + %4:_(s1) = G_ABDS %2, %3 + + %12:_(s64) = G_IMPLICIT_DEF + %13:_(s64) = G_IMPLICIT_DEF + %14:_(p0) = G_ABDS %12, %13 + + %23:_(<2 x s32>) = G_IMPLICIT_DEF + %24:_(<2 x s32>) = G_IMPLICIT_DEF + ; CHECK: Generic vector abds/abdu must preserve number of lanes + %5:_(s1) = G_ABDU %23, %24 + + %15:_(s32) = G_CONSTANT i32 0 + %16:_(s64) = G_CONSTANT i64 2 + ; CHECK: Generic abds/abdu must have same input types + %17:_(s1) = G_ABDU %15, %16 + + %18:_(s64) = G_CONSTANT i64 0 + %19:_(s64) = G_CONSTANT i64 2 + ; CHECK: Generic abds/abdu must have same input and output types + %20:_(s1) = G_ABDU %18, %19 + +... + diff --git a/llvm/test/TableGen/GlobalISelEmitter.td b/llvm/test/TableGen/GlobalISelEmitter.td index 7dbaf4390c0f7..ffefaba284299 100644 --- a/llvm/test/TableGen/GlobalISelEmitter.td +++ b/llvm/test/TableGen/GlobalISelEmitter.td @@ -513,7 +513,7 @@ def : Pat<(frag GPR32:$src1, complex:$src2, complex:$src3), // R00O-NEXT: GIM_Reject, // R00O: // Label [[DEFAULT_NUM]]: @[[DEFAULT]] // R00O-NEXT: GIM_Reject, -// R00O-NEXT: }; // Size: 1832 bytes +// R00O-NEXT: }; // Size: 1840 bytes def INSNBOB : I<(outs GPR32:$dst), (ins GPR32:$src1, GPR32:$src2, GPR32:$src3, GPR32:$src4), [(set GPR32:$dst, From 9d952422b49b4519a293744533735967d43995b0 Mon Sep 17 00:00:00 2001 From: Kiran Chandramohan Date: Wed, 4 Dec 2024 12:03:37 +0000 Subject: [PATCH 025/593] [Flang][OpenMP] Issue an error for loop directive without a loop (#118039) Fixes #107500 --- flang/lib/Semantics/resolve-directives.cpp | 33 +++++++++++++--------- flang/test/Semantics/OpenMP/do21.f90 | 27 ++++++++++++++++++ 2 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 flang/test/Semantics/OpenMP/do21.f90 diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp index e7adca479a61c..80a086acebba2 100644 --- a/flang/lib/Semantics/resolve-directives.cpp +++ b/flang/lib/Semantics/resolve-directives.cpp @@ -1895,22 +1895,29 @@ void OmpAttributeVisitor::PrivatizeAssociatedLoopIndexAndCheckLoopLevel( } const auto &outer{std::get>(x.t)}; - for (const parser::DoConstruct *loop{&*outer}; loop && level > 0; --level) { - // go through all the nested do-loops and resolve index variables - const parser::Name *iv{GetLoopIndex(*loop)}; - if (iv) { - if (auto *symbol{ResolveOmp(*iv, ivDSA, currScope())}) { - symbol->set(Symbol::Flag::OmpPreDetermined); - iv->symbol = symbol; // adjust the symbol within region - AddToContextObjectWithDSA(*symbol, ivDSA); - } + if (outer.has_value()) { + for (const parser::DoConstruct *loop{&*outer}; loop && level > 0; --level) { + // go through all the nested do-loops and resolve index variables + const parser::Name *iv{GetLoopIndex(*loop)}; + if (iv) { + if (auto *symbol{ResolveOmp(*iv, ivDSA, currScope())}) { + symbol->set(Symbol::Flag::OmpPreDetermined); + iv->symbol = symbol; // adjust the symbol within region + AddToContextObjectWithDSA(*symbol, ivDSA); + } - const auto &block{std::get(loop->t)}; - const auto it{block.begin()}; - loop = it != block.end() ? GetDoConstructIf(*it) : nullptr; + const auto &block{std::get(loop->t)}; + const auto it{block.begin()}; + loop = it != block.end() ? GetDoConstructIf(*it) : nullptr; + } } + CheckAssocLoopLevel(level, GetAssociatedClause()); + } else { + context_.Say(GetContext().directiveSource, + "A DO loop must follow the %s directive"_err_en_US, + parser::ToUpperCaseLetters( + llvm::omp::getOpenMPDirectiveName(GetContext().directive).str())); } - CheckAssocLoopLevel(level, GetAssociatedClause()); } void OmpAttributeVisitor::CheckAssocLoopLevel( std::int64_t level, const parser::OmpClause *clause) { diff --git a/flang/test/Semantics/OpenMP/do21.f90 b/flang/test/Semantics/OpenMP/do21.f90 new file mode 100644 index 0000000000000..2f5815c10c11a --- /dev/null +++ b/flang/test/Semantics/OpenMP/do21.f90 @@ -0,0 +1,27 @@ +! RUN: %python %S/../test_errors.py %s %flang -fopenmp +! Check for existence of loop following a DO directive + +subroutine do1 + !ERROR: A DO loop must follow the DO directive + !$omp do +end subroutine + +subroutine do2 + !ERROR: A DO loop must follow the PARALLEL DO directive + !$omp parallel do +end subroutine + +subroutine do3 + !ERROR: A DO loop must follow the SIMD directive + !$omp simd +end subroutine + +subroutine do4 + !ERROR: A DO loop must follow the DO SIMD directive + !$omp do simd +end subroutine + +subroutine do5 + !ERROR: A DO loop must follow the LOOP directive + !$omp loop +end subroutine From 75af62839b60a10439e8a31362d234b02c3958ba Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 4 Dec 2024 13:16:04 +0100 Subject: [PATCH 026/593] [ConstraintElim] Add tests for gep nuw (NFC) --- .../ConstraintElimination/gep-arithmetic.ll | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll b/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll index 5e2bab28807f5..98bf01ef37631 100644 --- a/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll +++ b/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll @@ -695,3 +695,75 @@ define i1 @test_missing_nusw(ptr %p, i32 %x, i32 %y) { %cmp2 = icmp ugt ptr %gep.x1, %gep.y ret i1 %cmp2 } + +define i1 @test_nuw(ptr %p, i64 %x, i64 %y) { +; CHECK-LABEL: @test_nuw( +; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i64 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: call void @llvm.assume(i1 [[CMP1]]) +; CHECK-NEXT: [[GEP_X:%.*]] = getelementptr nuw i8, ptr [[P:%.*]], i64 [[X]] +; CHECK-NEXT: [[GEP_Y:%.*]] = getelementptr nuw i8, ptr [[P]], i64 [[Y]] +; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt ptr [[GEP_X]], [[GEP_Y]] +; CHECK-NEXT: ret i1 [[CMP2]] +; + %cmp1 = icmp ugt i64 %x, %y + call void @llvm.assume(i1 %cmp1) + %gep.x = getelementptr nuw i8, ptr %p, i64 %x + %gep.y = getelementptr nuw i8, ptr %p, i64 %y + %cmp2 = icmp ugt ptr %gep.x, %gep.y + ret i1 %cmp2 +} + +define i1 @test_nuw_nested(ptr %p, i64 %x, i64 %y) { +; CHECK-LABEL: @test_nuw_nested( +; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i64 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: call void @llvm.assume(i1 [[CMP1]]) +; CHECK-NEXT: [[GEP_X:%.*]] = getelementptr nuw i8, ptr [[P:%.*]], i64 [[X]] +; CHECK-NEXT: [[GEP_X1:%.*]] = getelementptr nuw i8, ptr [[GEP_X]], i64 1 +; CHECK-NEXT: [[GEP_Y:%.*]] = getelementptr nuw i8, ptr [[P]], i64 [[Y]] +; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt ptr [[GEP_X1]], [[GEP_Y]] +; CHECK-NEXT: ret i1 [[CMP2]] +; + %cmp1 = icmp ugt i64 %x, %y + call void @llvm.assume(i1 %cmp1) + %gep.x = getelementptr nuw i8, ptr %p, i64 %x + %gep.x1 = getelementptr nuw i8, ptr %gep.x, i64 1 + %gep.y = getelementptr nuw i8, ptr %p, i64 %y + %cmp2 = icmp ugt ptr %gep.x1, %gep.y + ret i1 %cmp2 +} + +define i1 @test_nuw_nested_missing_nuw(ptr %p, i64 %x, i64 %y) { +; CHECK-LABEL: @test_nuw_nested_missing_nuw( +; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i64 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: call void @llvm.assume(i1 [[CMP1]]) +; CHECK-NEXT: [[GEP_X:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 [[X]] +; CHECK-NEXT: [[GEP_X1:%.*]] = getelementptr nuw i8, ptr [[GEP_X]], i64 1 +; CHECK-NEXT: [[GEP_Y:%.*]] = getelementptr nuw i8, ptr [[P]], i64 [[Y]] +; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt ptr [[GEP_X1]], [[GEP_Y]] +; CHECK-NEXT: ret i1 [[CMP2]] +; + %cmp1 = icmp ugt i64 %x, %y + call void @llvm.assume(i1 %cmp1) + %gep.x = getelementptr i8, ptr %p, i64 %x + %gep.x1 = getelementptr nuw i8, ptr %gep.x, i64 1 + %gep.y = getelementptr nuw i8, ptr %p, i64 %y + %cmp2 = icmp ugt ptr %gep.x1, %gep.y + ret i1 %cmp2 +} + +define i1 @test_nuw_incorrect_precondition(ptr %p, i64 %x, i64 %y) { +; CHECK-LABEL: @test_nuw_incorrect_precondition( +; CHECK-NEXT: [[CMP1:%.*]] = icmp uge i64 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: call void @llvm.assume(i1 [[CMP1]]) +; CHECK-NEXT: [[GEP_X:%.*]] = getelementptr nuw i8, ptr [[P:%.*]], i64 [[X]] +; CHECK-NEXT: [[GEP_Y:%.*]] = getelementptr nuw i8, ptr [[P]], i64 [[Y]] +; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt ptr [[GEP_X]], [[GEP_Y]] +; CHECK-NEXT: ret i1 [[CMP2]] +; + %cmp1 = icmp uge i64 %x, %y + call void @llvm.assume(i1 %cmp1) + %gep.x = getelementptr nuw i8, ptr %p, i64 %x + %gep.y = getelementptr nuw i8, ptr %p, i64 %y + %cmp2 = icmp ugt ptr %gep.x, %gep.y + ret i1 %cmp2 +} From 140df02aa2917fd9971af3bbf3145e513c1a8b2b Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 4 Dec 2024 12:05:10 +0000 Subject: [PATCH 027/593] [SLP][X86] Update test coverage for #111126 I'd copied the test case from #118016 instead of the original #111126 test case --- .../SLPVectorizer/X86/store-constant.ll | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll b/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll index 41c3561dd7378..15c878daff26b 100644 --- a/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll @@ -14,12 +14,28 @@ define void @PR111126() { ; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 24), align 8 ; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 ; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 48), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 56), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 64), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 72), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 80), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 88), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 96), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 104), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 112), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 120), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 128), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 136), align 8 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 144), align 16 +; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 152), align 8 ; SSE-NEXT: ret void ; ; AVX-LABEL: @PR111126( ; AVX-NEXT: store <4 x i64> splat (i64 1), ptr @arr, align 16 -; AVX-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 -; AVX-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 +; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 +; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 64), align 16 +; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 96), align 16 +; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 128), align 16 ; AVX-NEXT: ret void ; store i64 1, ptr @arr, align 16 @@ -28,5 +44,19 @@ define void @PR111126() { store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 24), align 8 store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 48), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 56), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 64), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 72), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 80), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 88), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 96), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 104), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 112), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 120), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 128), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 136), align 8 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 144), align 16 + store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 152), align 8 ret void } From a88653a2cd4f22ff2ac4cb25214caf3e5fd27aff Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Wed, 4 Dec 2024 12:45:30 +0000 Subject: [PATCH 028/593] [LLVM][IR] When evaluating GEP offsets don't assume ConstantInt is a scalar. (#117162) --- llvm/lib/Analysis/ConstantFolding.cpp | 2 +- llvm/lib/IR/Operator.cpp | 9 ++++++--- llvm/test/Transforms/GVN/opaque-ptr.ll | 9 +++++++++ llvm/test/Transforms/InstCombine/gep-vector-indices.ll | 1 + llvm/test/Transforms/InstSimplify/gep.ll | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp index 1971c28fc4c4d..47b96e00c7765 100644 --- a/llvm/lib/Analysis/ConstantFolding.cpp +++ b/llvm/lib/Analysis/ConstantFolding.cpp @@ -881,7 +881,7 @@ Constant *SymbolicallyEvaluateGEP(const GEPOperator *GEP, Type *IntIdxTy = DL.getIndexType(Ptr->getType()); for (unsigned i = 1, e = Ops.size(); i != e; ++i) - if (!isa(Ops[i])) + if (!isa(Ops[i]) || !Ops[i]->getType()->isIntegerTy()) return nullptr; unsigned BitWidth = DL.getTypeSizeInBits(IntIdxTy); diff --git a/llvm/lib/IR/Operator.cpp b/llvm/lib/IR/Operator.cpp index e1580cf760969..740ad4a8c0a3c 100644 --- a/llvm/lib/IR/Operator.cpp +++ b/llvm/lib/IR/Operator.cpp @@ -126,7 +126,8 @@ bool GEPOperator::accumulateConstantOffset( APInt &Offset, function_ref ExternalAnalysis) { // Fast path for canonical getelementptr i8 form. if (SourceType->isIntegerTy(8) && !ExternalAnalysis) { - if (auto *CI = dyn_cast(Index.front())) { + auto *CI = dyn_cast(Index.front()); + if (CI && CI->getType()->isIntegerTy()) { Offset += CI->getValue().sextOrTrunc(Offset.getBitWidth()); return true; } @@ -165,7 +166,8 @@ bool GEPOperator::accumulateConstantOffset( Value *V = GTI.getOperand(); StructType *STy = GTI.getStructTypeOrNull(); // Handle ConstantInt if possible. - if (auto ConstOffset = dyn_cast(V)) { + auto *ConstOffset = dyn_cast(V); + if (ConstOffset && ConstOffset->getType()->isIntegerTy()) { if (ConstOffset->isZero()) continue; // if the type is scalable and the constant is not zero (vscale * n * 0 = @@ -226,7 +228,8 @@ bool GEPOperator::collectOffset( Value *V = GTI.getOperand(); StructType *STy = GTI.getStructTypeOrNull(); // Handle ConstantInt if possible. - if (auto ConstOffset = dyn_cast(V)) { + auto *ConstOffset = dyn_cast(V); + if (ConstOffset && ConstOffset->getType()->isIntegerTy()) { if (ConstOffset->isZero()) continue; // If the type is scalable and the constant is not zero (vscale * n * 0 = diff --git a/llvm/test/Transforms/GVN/opaque-ptr.ll b/llvm/test/Transforms/GVN/opaque-ptr.ll index 4a0f9d319501c..8a7e420584859 100644 --- a/llvm/test/Transforms/GVN/opaque-ptr.ll +++ b/llvm/test/Transforms/GVN/opaque-ptr.ll @@ -1,5 +1,6 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -passes=gvn < %s | FileCheck %s +; RUN: opt -S -passes=gvn -use-constant-int-for-fixed-length-splat < %s | FileCheck %s declare void @use(ptr) declare void @use.i32(i32) @@ -58,6 +59,10 @@ define void @gep_cse_offset_canonicalization(ptr %p, i64 %idx, i64 %idx2) { ; CHECK-NEXT: call void @use(ptr [[GEP6]]) ; CHECK-NEXT: call void @use(ptr [[GEP6_SAME]]) ; CHECK-NEXT: call void @use(ptr [[GEP6_DIFFERENT]]) +; CHECK-NEXT: %gep7 = getelementptr <16 x i32>, ptr %p, i64 1 +; CHECK-NEXT: %gep7.different = getelementptr <16 x i32>, ptr %p, <16 x i64> splat (i64 1) +; CHECK-NEXT: call void @use(ptr %gep7) +; CHECK-NEXT: call void @use(<16 x ptr> %gep7.different) ; CHECK-NEXT: ret void ; %gep1 = getelementptr i64, ptr %p, i64 1 @@ -101,6 +106,10 @@ define void @gep_cse_offset_canonicalization(ptr %p, i64 %idx, i64 %idx2) { call void @use(ptr %gep6) call void @use(ptr %gep6.same) call void @use(ptr %gep6.different) + %gep7 = getelementptr <16 x i32>, ptr %p, i64 1 + %gep7.different = getelementptr <16 x i32>, ptr %p, <16 x i64> splat (i64 1) + call void @use(ptr %gep7) + call void @use(<16 x ptr> %gep7.different) ret void } diff --git a/llvm/test/Transforms/InstCombine/gep-vector-indices.ll b/llvm/test/Transforms/InstCombine/gep-vector-indices.ll index e9534e45ec141..9f33f4e9c206a 100644 --- a/llvm/test/Transforms/InstCombine/gep-vector-indices.ll +++ b/llvm/test/Transforms/InstCombine/gep-vector-indices.ll @@ -1,5 +1,6 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -passes=instcombine %s -S | FileCheck %s +; RUN: opt -passes=instcombine -use-constant-int-for-fixed-length-splat %s -S | FileCheck %s define ptr @vector_splat_indices_v2i64_ext0(ptr %a) { ; CHECK-LABEL: @vector_splat_indices_v2i64_ext0( diff --git a/llvm/test/Transforms/InstSimplify/gep.ll b/llvm/test/Transforms/InstSimplify/gep.ll index b23494fc56aa4..a330f5cbc9268 100644 --- a/llvm/test/Transforms/InstSimplify/gep.ll +++ b/llvm/test/Transforms/InstSimplify/gep.ll @@ -1,5 +1,6 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -passes=instsimplify < %s | FileCheck %s +; RUN: opt -S -passes=instsimplify -use-constant-int-for-fixed-length-splat < %s | FileCheck %s target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" From 920ea4af64d92486b75dc13e25bff32deda287b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Wed, 4 Dec 2024 13:47:21 +0100 Subject: [PATCH 029/593] [SPIR-V] Replace assert with report_fatal (#118617) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Irreducible must always be rejected, not only in debug builds. Signed-off-by: Nathan Gauër --- llvm/lib/Target/SPIRV/SPIRVUtils.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/SPIRV/SPIRVUtils.cpp b/llvm/lib/Target/SPIRV/SPIRVUtils.cpp index 7a1914aac8ceb..aadaae409bf3a 100644 --- a/llvm/lib/Target/SPIRV/SPIRVUtils.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVUtils.cpp @@ -580,8 +580,9 @@ size_t PartialOrderingVisitor::visit(BasicBlock *BB, size_t Unused) { if (!CanBeVisited(BB)) { ToVisit.push(BB); - assert(QueueIndex < ToVisit.size() && - "No valid candidate in the queue. Is the graph reducible?"); + if (QueueIndex >= ToVisit.size()) + llvm::report_fatal_error( + "No valid candidate in the queue. Is the graph reducible?"); QueueIndex++; continue; } From 026fbe519e16a4993601d2bac509e182081fc068 Mon Sep 17 00:00:00 2001 From: Maksim Ivanov Date: Wed, 4 Dec 2024 12:53:31 +0000 Subject: [PATCH 030/593] [clang][www] Remove ClangDataFormat.py from docs (#117943) The script was removed in https://github.com/llvm/llvm-project/pull/96385. Instead, mention the LLVM formatter as it's still very useful for Clang's code. --- clang/www/hacking.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang/www/hacking.html b/clang/www/hacking.html index 78b67cd05c53c..a17e791eed477 100755 --- a/clang/www/hacking.html +++ b/clang/www/hacking.html @@ -89,9 +89,9 @@

Debugging

qualifiers, and the getTypePtr() method to get the wrapped Type* which you can then dump.
  • For LLDB users there are - data formatters for clang data structures in - - clang/utils/ClangDataFormat.py.
  • + data formatters for LLVM data structures in + + llvm/utils/lldbDataFormatters.py. From 2e85138c0d06c0cc17569d375ce7a75e60cc6dd0 Mon Sep 17 00:00:00 2001 From: Balazs Benics Date: Wed, 4 Dec 2024 15:17:47 +0100 Subject: [PATCH 031/593] [clang][NFC] Generalize getSpecificAttr for const attributes (#116606) This patch allows using `getSpecificAttr` for getting `const` attributes. Previously, if users of this API would want to get a const Attribute pointer, they had to pass `getSpecificAttr()`, to get it compile. It feels like an arbitrary limitation as the constness was already encoded in the Attribute container's value type. --- clang/include/clang/AST/AttrIterator.h | 16 +++++++++------- clang/lib/CodeGen/CGLoopInfo.cpp | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/clang/include/clang/AST/AttrIterator.h b/clang/include/clang/AST/AttrIterator.h index 66571e1cf0b8e..7e2bb0381d4c8 100644 --- a/clang/include/clang/AST/AttrIterator.h +++ b/clang/include/clang/AST/AttrIterator.h @@ -14,11 +14,13 @@ #define LLVM_CLANG_AST_ATTRITERATOR_H #include "clang/Basic/LLVM.h" +#include "llvm/ADT/ADL.h" #include "llvm/ADT/SmallVector.h" #include "llvm/Support/Casting.h" #include #include #include +#include namespace clang { @@ -113,13 +115,13 @@ inline bool hasSpecificAttr(const Container& container) { specific_attr_end(container); } template -inline SpecificAttr *getSpecificAttr(const Container& container) { - specific_attr_iterator i = - specific_attr_begin(container); - if (i != specific_attr_end(container)) - return *i; - else - return nullptr; +inline auto *getSpecificAttr(const Container &container) { + using ValueTy = llvm::detail::ValueOfRange; + using ValuePointeeTy = std::remove_pointer_t; + using IterTy = std::conditional_t, + const SpecificAttr, SpecificAttr>; + auto It = specific_attr_begin(container); + return It != specific_attr_end(container) ? *It : nullptr; } } // namespace clang diff --git a/clang/lib/CodeGen/CGLoopInfo.cpp b/clang/lib/CodeGen/CGLoopInfo.cpp index cdff7e50c4ee7..448571221ef81 100644 --- a/clang/lib/CodeGen/CGLoopInfo.cpp +++ b/clang/lib/CodeGen/CGLoopInfo.cpp @@ -811,7 +811,7 @@ void LoopInfoStack::push(BasicBlock *Header, clang::ASTContext &Ctx, // Identify loop attribute 'code_align' from Attrs. // For attribute code_align: // n - 'llvm.loop.align i32 n' metadata will be emitted. - if (const auto *CodeAlign = getSpecificAttr(Attrs)) { + if (const auto *CodeAlign = getSpecificAttr(Attrs)) { const auto *CE = cast(CodeAlign->getAlignment()); llvm::APSInt ArgVal = CE->getResultAsAPSInt(); setCodeAlign(ArgVal.getSExtValue()); From 8271195de05742ed7079d7882fbebc2daecbd7e2 Mon Sep 17 00:00:00 2001 From: cor3ntin Date: Wed, 4 Dec 2024 15:31:19 +0100 Subject: [PATCH 032/593] [Clang] Deleting an incomplete enum type is not an error (#118455) The changes introduced in #97733 accidentally prevented to delete an incomplete enum (the validity of which has been confirmed by CWG2925 Fixes #99278 --- clang/docs/ReleaseNotes.rst | 1 + clang/lib/Sema/SemaExprCXX.cpp | 3 ++- clang/test/SemaCXX/new-delete.cpp | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 755418e9550cf..7f7d077e284af 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -770,6 +770,7 @@ Bug Fixes to C++ Support - Fixed an assertion failure caused by mangled names with invalid identifiers. (#GH112205) - Fixed an incorrect lambda scope of generic lambdas that caused Clang to crash when computing potential lambda captures at the end of a full expression. (#GH115931) +- Clang no longer rejects deleting a pointer of incomplete enumeration type. (#GH99278) Bug Fixes to AST Handling ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index f58c0fa21e838..db9ea7fb66e05 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -3747,7 +3747,8 @@ Sema::ActOnCXXDelete(SourceLocation StartLoc, bool UseGlobal, } else if (!Pointee->isDependentType()) { // FIXME: This can result in errors if the definition was imported from a // module but is hidden. - if (!RequireCompleteType(StartLoc, Pointee, + if (!Pointee->isStructureOrClassType() || + !RequireCompleteType(StartLoc, Pointee, LangOpts.CPlusPlus26 ? diag::err_delete_incomplete : diag::warn_delete_incomplete, diff --git a/clang/test/SemaCXX/new-delete.cpp b/clang/test/SemaCXX/new-delete.cpp index 595bdc689d694..98b168d9df1f3 100644 --- a/clang/test/SemaCXX/new-delete.cpp +++ b/clang/test/SemaCXX/new-delete.cpp @@ -540,6 +540,13 @@ namespace PR10504 { void f(A *x) { delete x; } // expected-warning {{delete called on 'PR10504::A' that is abstract but has non-virtual destructor}} } +#if __cplusplus >= 201103L +enum GH99278_1 { + zero = decltype(delete static_cast(nullptr), 0){} + // expected-warning@-1 {{expression with side effects has no effect in an unevaluated context}} +}; +#endif + struct PlacementArg {}; inline void *operator new[](size_t, const PlacementArg &) throw () { return 0; From 99b862efba9c2db5ec0aa32f62b5bc78df61d7a4 Mon Sep 17 00:00:00 2001 From: Oliver Stannard Date: Wed, 4 Dec 2024 15:32:15 +0100 Subject: [PATCH 033/593] [DAGISel][ARM] Fix vector truncate combine for big-endian (#118101) This DAG combine was incorrect for big-endian targets, because it assumes that when a bitcast changes the lane width, the least-significant bits of the wider lanes are in the lower-numbered lanes of the smaller type, which is only true for little-endian. --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 4 +- llvm/test/CodeGen/ARM/vector-trunc.ll | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 llvm/test/CodeGen/ARM/vector-trunc.ll diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index e78dd8cdf3e6e..1aab0fce4e1e5 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -15498,12 +15498,14 @@ SDValue DAGCombiner::visitTRUNCATE(SDNode *N) { unsigned BuildVecNumElts = BuildVect.getNumOperands(); unsigned TruncVecNumElts = VT.getVectorNumElements(); unsigned TruncEltOffset = BuildVecNumElts / TruncVecNumElts; + unsigned FirstElt = isLE ? 0 : (TruncEltOffset - 1); assert((BuildVecNumElts % TruncVecNumElts) == 0 && "Invalid number of elements"); SmallVector Opnds; - for (unsigned i = 0, e = BuildVecNumElts; i != e; i += TruncEltOffset) + for (unsigned i = FirstElt, e = BuildVecNumElts; i < e; + i += TruncEltOffset) Opnds.push_back(BuildVect.getOperand(i)); return DAG.getBuildVector(VT, DL, Opnds); diff --git a/llvm/test/CodeGen/ARM/vector-trunc.ll b/llvm/test/CodeGen/ARM/vector-trunc.ll new file mode 100644 index 0000000000000..9acf463c2be93 --- /dev/null +++ b/llvm/test/CodeGen/ARM/vector-trunc.ll @@ -0,0 +1,52 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 +; RUN: llc -mtriple=armv7-unknown-none-eabihf -mattr=+neon < %s | FileCheck %s --check-prefix=LE +; RUN: llc -mtriple=armebv7-unknown-none-eabihf -mattr=+neon < %s | FileCheck %s --check-prefix=BE + +define i32 @test(i64 %arg1) { +; LE-LABEL: test: +; LE: @ %bb.0: @ %entry +; LE-NEXT: subs r0, r0, #1 +; LE-NEXT: mov r2, #0 +; LE-NEXT: sbcs r0, r1, #0 +; LE-NEXT: vldr s0, .LCPI0_0 +; LE-NEXT: movwhs r2, #1 +; LE-NEXT: cmp r2, #0 +; LE-NEXT: mvnne r2, #0 +; LE-NEXT: vmov s1, r2 +; LE-NEXT: vmovn.i32 d16, q0 +; LE-NEXT: vmovn.i16 d16, q8 +; LE-NEXT: vmov.u8 r0, d16[0] +; LE-NEXT: and r0, r0, #1 +; LE-NEXT: bx lr +; LE-NEXT: .p2align 2 +; LE-NEXT: @ %bb.1: +; LE-NEXT: .LCPI0_0: +; LE-NEXT: .long 0xffffffff @ float NaN +; +; BE-LABEL: test: +; BE: @ %bb.0: @ %entry +; BE-NEXT: subs r1, r1, #1 +; BE-NEXT: mov r2, #0 +; BE-NEXT: sbcs r0, r0, #0 +; BE-NEXT: vldr s0, .LCPI0_0 +; BE-NEXT: movwhs r2, #1 +; BE-NEXT: cmp r2, #0 +; BE-NEXT: mvnne r2, #0 +; BE-NEXT: vmov s1, r2 +; BE-NEXT: vmovn.i32 d16, q0 +; BE-NEXT: vmovn.i16 d16, q8 +; BE-NEXT: vmov.u8 r0, d16[0] +; BE-NEXT: and r0, r0, #1 +; BE-NEXT: bx lr +; BE-NEXT: .p2align 2 +; BE-NEXT: @ %bb.1: +; BE-NEXT: .LCPI0_0: +; BE-NEXT: .long 0xffffffff @ float NaN +entry: + %insert_zero = insertelement <8 x i64> poison, i64 %arg1, i64 0 + %splat_zero = shufflevector <8 x i64> %insert_zero, <8 x i64> poison, <8 x i32> zeroinitializer + %cmp_vec = icmp ule <8 x i64> , %splat_zero + %first_cmp = extractelement <8 x i1> %cmp_vec, i32 0 + %ext = zext i1 %first_cmp to i32 + ret i32 %ext +} From 7235ac90517b61f8a5b5bd4e6a55437c094d6156 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 4 Dec 2024 15:36:41 +0100 Subject: [PATCH 034/593] [LLD][COFF] Check load config size before setting its DependentLoadFlags (#118535) Merge prepareLoadConfig and checkLoadConfigGuardData to share helper macros. --- lld/COFF/Writer.cpp | 14 +++++--------- lld/test/COFF/deploadflag-cfg-short.s | 12 ++++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 lld/test/COFF/deploadflag-cfg-short.s diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 3ec8e42f97c8e..34f4839396df1 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -277,7 +277,6 @@ class Writer { void prepareLoadConfig(); template void prepareLoadConfig(T *loadConfig); - template void checkLoadConfigGuardData(const T *loadConfig); std::unique_ptr &buffer; std::map partialSections; @@ -2633,14 +2632,6 @@ void Writer::prepareLoadConfig() { } template void Writer::prepareLoadConfig(T *loadConfig) { - if (ctx.config.dependentLoadFlags) - loadConfig->DependentLoadFlags = ctx.config.dependentLoadFlags; - - checkLoadConfigGuardData(loadConfig); -} - -template -void Writer::checkLoadConfigGuardData(const T *loadConfig) { size_t loadConfigSize = loadConfig->Size; #define RETURN_IF_NOT_CONTAINS(field) \ @@ -2662,6 +2653,11 @@ void Writer::checkLoadConfigGuardData(const T *loadConfig) { if (loadConfig->field != s->getVA()) \ warn(#field " not set correctly in '_load_config_used'"); + if (ctx.config.dependentLoadFlags) { + RETURN_IF_NOT_CONTAINS(DependentLoadFlags) + loadConfig->DependentLoadFlags = ctx.config.dependentLoadFlags; + } + if (ctx.config.guardCF == GuardCFLevel::Off) return; RETURN_IF_NOT_CONTAINS(GuardFlags) diff --git a/lld/test/COFF/deploadflag-cfg-short.s b/lld/test/COFF/deploadflag-cfg-short.s new file mode 100644 index 0000000000000..9cc5248044d8a --- /dev/null +++ b/lld/test/COFF/deploadflag-cfg-short.s @@ -0,0 +1,12 @@ +# REQUIRES: x86 + +# RUN: llvm-mc -triple x86_64-windows-msvc -filetype=obj %s -o %t.obj +# RUN: lld-link %t.obj -out:%t.dll -dll -noentry -nodefaultlib -dependentloadflag:0x800 2>&1 | FileCheck %s +# CHECK: lld-link: warning: '_load_config_used' structure too small to include DependentLoadFlags + + .section .rdata,"dr" + .balign 8 +.globl _load_config_used +_load_config_used: + .long 0x4c + .fill 0x48, 1, 0 From 7b6e0d9fc3993f3e3df596fd16d97e2ed2e1d0aa Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Wed, 4 Dec 2024 14:51:31 +0000 Subject: [PATCH 035/593] [Matrix] Use DenseMap for ShapeMap instead of ValueMap. (#118282) ValueMap automatically updates entries with the new value if they have been RAUW. This can lead to instructions that are expected to not have shape info to be added to the map (e.g. shufflevector as in the added test case). This leads to incorrect results. Originally it was used for transpose optimizations, but they now all use updateShapeAndReplaceAllUsesWith, which takes care of updating the shape info as needed. This fixes a crash in the newly added test cases. PR: https://github.com/llvm/llvm-project/pull/118282 --- .../Scalar/LowerMatrixIntrinsics.cpp | 71 ++++++++++++------- .../dot-product-transpose-int.ll | 30 ++++++++ .../transpose-opts-lifting.ll | 20 ++++++ 3 files changed, 94 insertions(+), 27 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp index 6a9ec48864b2c..29844c4630751 100644 --- a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp +++ b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp @@ -97,19 +97,6 @@ static DISubprogram *getSubprogram(DIScope *Scope) { return cast(Scope)->getSubprogram(); } -/// Erase \p V from \p BB and move \II forward to avoid invalidating -/// iterators. -static void eraseFromParentAndMove(Value *V, BasicBlock::reverse_iterator &II, - BasicBlock &BB) { - auto *Inst = cast(V); - // Still used, don't erase. - if (!Inst->use_empty()) - return; - if (II != BB.rend() && Inst == &*II) - ++II; - Inst->eraseFromParent(); -} - /// Return true if V is a splat of a value (which is used when multiplying a /// matrix with a scalar). static bool isSplat(Value *V) { @@ -259,7 +246,7 @@ static bool isUniformShape(Value *V) { /// Return the ShapeInfo for the result of \p I, it it can be determined. static std::optional computeShapeInfoForInst(Instruction *I, - const ValueMap &ShapeMap) { + const DenseMap &ShapeMap) { Value *M; Value *N; Value *K; @@ -493,10 +480,16 @@ class LowerMatrixIntrinsics { /// the result value of the instruction, with the only exceptions being store /// instructions and the matrix_column_major_store intrinsics. For those, the /// shape information indicates that those instructions should be lowered - /// using shape information as well. A ValueMap is used so that when - /// sub-passes like optimizeTransposes performs RAUW the map stays - /// up-to-date. - ValueMap ShapeMap; + /// using shape information as well. Note that extra care is needed when + /// erasing or RAUW'ing a value that is present in ShapeMap. If the + /// replacement is also a matrix operation, use + /// updateShapeAndReplaceAllUsesWith to make sure the replacement is added to + /// ShapeMap. We don't use ValueMap, as there are also cases where we do not + /// want to add shape information for a replacement instruction. When directly + /// erasing a value with an entry in ShapeMap, use + /// eraseFromParentAndRemoveFromShapeMap to make sure ShapeMap is also updated + /// accordingly. + DenseMap ShapeMap; /// List of instructions to remove. While lowering, we are not replacing all /// users of a lowered instruction, if shape information is available and @@ -758,6 +751,30 @@ class LowerMatrixIntrinsics { return Operation(T0, Shape0.t(), T1, Shape1.t()); } + /// Erase \p Inst from both ShapeMap (if an entry exists) and erase \p Inst + /// itself. + void eraseFromParentAndRemoveFromShapeMap(Instruction *Inst) { + auto Iter = ShapeMap.find(Inst); + if (Iter != ShapeMap.end()) + ShapeMap.erase(Iter); + Inst->eraseFromParent(); + } + + /// Erase \p V from \p BB and move \II forward to avoid invalidating + /// iterators. + void eraseFromParentAndMove(Value *V, BasicBlock::reverse_iterator &II, + BasicBlock &BB) { + auto *Inst = cast(V); + // Still used, don't erase. + if (!Inst->use_empty()) + return; + if (II != BB.rend() && Inst == &*II) + ++II; + eraseFromParentAndRemoveFromShapeMap(Inst); + } + + /// Add a new entry to ShapeMap for \p New with \p Old's shape info, erase the + /// entry for \p Old and replace all uses of \p Old with \p New. void updateShapeAndReplaceAllUsesWith(Instruction &Old, Value *New) { // We need to remove Old from the ShapeMap otherwise RAUW will replace it // with New. We should only add New it it supportsShapeInfo so we insert @@ -871,13 +888,13 @@ class LowerMatrixIntrinsics { void liftTranspose(Instruction &I) { // Erase dead Instructions after lifting transposes from binops. - auto CleanupBinOp = [](Instruction &T, Value *A, Value *B) { + auto CleanupBinOp = [this](Instruction &T, Value *A, Value *B) { if (T.use_empty()) - T.eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(&T); if (A->use_empty()) - cast(A)->eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(cast(A)); if (A != B && B->use_empty()) - cast(B)->eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(cast(B)); }; Value *A, *B, *AT, *BT; @@ -1484,7 +1501,7 @@ class LowerMatrixIntrinsics { m_Value(Arg)))) { auto *NewLoad = Builder.CreateLoad(Op->getType(), Arg); Op->replaceAllUsesWith(NewLoad); - cast(Op)->eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(cast(Op)); return; } else if (match(Op, m_Intrinsic( m_Value(Arg)))) { @@ -1853,15 +1870,15 @@ class LowerMatrixIntrinsics { // Mark eliminated instructions as fused and remove them. FusedInsts.insert(Store); FusedInsts.insert(MatMul); - Store->eraseFromParent(); - MatMul->eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(Store); + eraseFromParentAndRemoveFromShapeMap(MatMul); if (LoadOp0->hasNUses(0)) { FusedInsts.insert(LoadOp0); - LoadOp0->eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(LoadOp0); } if (LoadOp1 != LoadOp0 && LoadOp1->hasNUses(0)) { FusedInsts.insert(LoadOp1); - LoadOp1->eraseFromParent(); + eraseFromParentAndRemoveFromShapeMap(LoadOp1); } } diff --git a/llvm/test/Transforms/LowerMatrixIntrinsics/dot-product-transpose-int.ll b/llvm/test/Transforms/LowerMatrixIntrinsics/dot-product-transpose-int.ll index 2fd77e245a34e..aadaf1ffffb23 100644 --- a/llvm/test/Transforms/LowerMatrixIntrinsics/dot-product-transpose-int.ll +++ b/llvm/test/Transforms/LowerMatrixIntrinsics/dot-product-transpose-int.ll @@ -190,3 +190,33 @@ declare <1 x i32> @llvm.matrix.multiply.v1i32.v5i32.v5i32(<5 x i32>, <5 x i32>, declare <5 x i32> @llvm.matrix.column.major.load.v5i32.i64(ptr nocapture, i64, i1 immarg, i32 immarg, i32 immarg) #1 declare <5 x i32> @llvm.matrix.transpose.v5i32(<5 x i32>, i32 immarg, i32 immarg) #0 + +define <1 x i32> @test_dot_product_with_transposed_shuffle_op(<4 x i32> %a, <2 x i32> %b) { +; CHECK-LABEL: @test_dot_product_with_transposed_shuffle_op( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[SPLIT:%.*]] = shufflevector <4 x i32> [[A:%.*]], <4 x i32> poison, <2 x i32> +; CHECK-NEXT: [[SPLIT1:%.*]] = shufflevector <4 x i32> [[A]], <4 x i32> poison, <2 x i32> +; CHECK-NEXT: [[TMP0:%.*]] = extractelement <2 x i32> [[SPLIT]], i64 0 +; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x i32> poison, i32 [[TMP0]], i64 0 +; CHECK-NEXT: [[TMP2:%.*]] = extractelement <2 x i32> [[SPLIT1]], i64 0 +; CHECK-NEXT: [[TMP3:%.*]] = insertelement <2 x i32> [[TMP1]], i32 [[TMP2]], i64 1 +; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x i32> [[SPLIT]], i64 1 +; CHECK-NEXT: [[TMP5:%.*]] = insertelement <2 x i32> poison, i32 [[TMP4]], i64 0 +; CHECK-NEXT: [[TMP6:%.*]] = extractelement <2 x i32> [[SPLIT1]], i64 1 +; CHECK-NEXT: [[TMP7:%.*]] = insertelement <2 x i32> [[TMP5]], i32 [[TMP6]], i64 1 +; CHECK-NEXT: [[TMP8:%.*]] = shufflevector <2 x i32> [[TMP3]], <2 x i32> [[TMP7]], <4 x i32> +; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i32> [[TMP8]], <4 x i32> zeroinitializer, <2 x i32> +; CHECK-NEXT: [[TMP9:%.*]] = mul <2 x i32> [[SHUFFLE]], [[B:%.*]] +; CHECK-NEXT: [[TMP10:%.*]] = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> [[TMP9]]) +; CHECK-NEXT: [[TMP11:%.*]] = insertelement <1 x i32> poison, i32 [[TMP10]], i64 0 +; CHECK-NEXT: ret <1 x i32> [[TMP11]] +; +entry: + %t.a = tail call <4 x i32> @llvm.matrix.transpose.v4i32(<4 x i32> %a, i32 2, i32 2) + %shuffle = shufflevector <4 x i32> %t.a, <4 x i32> zeroinitializer, <2 x i32> + %t.shuffle = call <2 x i32> @llvm.matrix.transpose.v2i32(<2 x i32> %shuffle, i32 2, i32 1) + %m = call <1 x i32> @llvm.matrix.multiply.v1i32.v2i32.v2i32(<2 x i32> %t.shuffle, <2 x i32> %b, i32 1, i32 2, i32 1) + ret <1 x i32> %m +} + +declare <2 x i32> @llvm.matrix.transpose.v2i32(<2 x i32>, i32 immarg, i32 immarg) diff --git a/llvm/test/Transforms/LowerMatrixIntrinsics/transpose-opts-lifting.ll b/llvm/test/Transforms/LowerMatrixIntrinsics/transpose-opts-lifting.ll index fcf83b03bc3d2..1b3b41d8cfe1f 100644 --- a/llvm/test/Transforms/LowerMatrixIntrinsics/transpose-opts-lifting.ll +++ b/llvm/test/Transforms/LowerMatrixIntrinsics/transpose-opts-lifting.ll @@ -144,8 +144,28 @@ entry: ret <6 x double> %mul } +define void @test_remove_entries_from_shape_map(<3 x float> %a, <2 x float> %b, <6 x float> %c, ptr %dst) { +; CHECK-LABEL: define void @test_remove_entries_from_shape_map( +; CHECK-SAME: <3 x float> [[A:%.*]], <2 x float> [[B:%.*]], <6 x float> [[C:%.*]], ptr [[DST:%.*]]) { +; CHECK-NEXT: [[ENTRY:.*:]] +; CHECK-NEXT: [[TMP0:%.*]] = call <6 x float> @llvm.matrix.multiply.v6f32.v3f32.v2f32(<3 x float> [[A]], <2 x float> [[B]], i32 3, i32 1, i32 2) +; CHECK-NEXT: [[MFADD:%.*]] = fadd <6 x float> [[C]], [[TMP0]] +; CHECK-NEXT: [[MFADD_T:%.*]] = call <6 x float> @llvm.matrix.transpose.v6f32(<6 x float> [[MFADD]], i32 3, i32 2) +; CHECK-NEXT: store <6 x float> [[MFADD_T]], ptr [[DST]], align 4 +; CHECK-NEXT: ret void +; +entry: + %m = tail call <6 x float> @llvm.matrix.multiply.v6f32.v3f32.v2f32(<3 x float> %a, <2 x float> %b, i32 3, i32 1, i32 2) + %add = fadd <6 x float> %c, %m + %t = tail call <6 x float> @llvm.matrix.transpose.v6f32(<6 x float> %add, i32 3, i32 2) + store <6 x float> %t, ptr %dst, align 4 + ret void +} + declare <6 x double> @llvm.matrix.transpose.v6f64.v6f64(<6 x double>, i32, i32) declare <4 x double> @llvm.matrix.transpose.v4f64.v4f64(<4 x double>, i32, i32) declare <9 x double> @llvm.matrix.multiply.v9f64.v6f64(<6 x double>, <6 x double>, i32, i32, i32) declare <6 x double> @llvm.matrix.multiply.v6f64.v6f64.v4f64(<6 x double>, <4 x double>, i32, i32, i32) declare <6 x double> @llvm.matrix.multiply.v6f64.v6f64.v6f64(<6 x double>, <4 x double>, i32, i32, i32) +declare <6 x float> @llvm.matrix.transpose.v6f32(<6 x float>, i32 immarg, i32 immarg) +declare <6 x float> @llvm.matrix.multiply.v6f32.v3f32.v2f32(<3 x float>, <2 x float>, i32 immarg, i32 immarg, i32 immarg) From a608607fd70503c20854bbc0f6f5182b51489b4f Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 4 Dec 2024 16:27:31 +0100 Subject: [PATCH 036/593] [ConstraintElim] Add support for decomposing gep nuw (#118639) ConstraintElimination currently only supports decomposing gep nusw with non-negative indices (with "non-negative" possibly being enforced via pre-condition). Add support for gep nuw, which directly gives us the necessary guarantees for the decomposition. --- .../Transforms/Scalar/ConstraintElimination.cpp | 16 ++++++++++------ .../ConstraintElimination/gep-arithmetic.ll | 6 ++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp index 944be38cb94bc..8d1e793836c77 100644 --- a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp +++ b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp @@ -452,7 +452,9 @@ static Decomposition decomposeGEP(GEPOperator &GEP, "unsigned predicates at the moment."); const auto &[BasePtr, ConstantOffset, VariableOffsets, NW] = collectOffsets(GEP, DL); - if (!BasePtr || !NW.hasNoUnsignedSignedWrap()) + // We support either plain gep nuw, or gep nusw with non-negative offset, + // which implies gep nuw. + if (!BasePtr || NW == GEPNoWrapFlags::none()) return &GEP; Decomposition Result(ConstantOffset.getSExtValue(), DecompEntry(1, BasePtr)); @@ -461,11 +463,13 @@ static Decomposition decomposeGEP(GEPOperator &GEP, IdxResult.mul(Scale.getSExtValue()); Result.add(IdxResult); - // If Op0 is signed non-negative, the GEP is increasing monotonically and - // can be de-composed. - if (!isKnownNonNegative(Index, DL)) - Preconditions.emplace_back(CmpInst::ICMP_SGE, Index, - ConstantInt::get(Index->getType(), 0)); + if (!NW.hasNoUnsignedWrap()) { + // Try to prove nuw from nusw and nneg. + assert(NW.hasNoUnsignedSignedWrap() && "Must have nusw flag"); + if (!isKnownNonNegative(Index, DL)) + Preconditions.emplace_back(CmpInst::ICMP_SGE, Index, + ConstantInt::get(Index->getType(), 0)); + } } return Result; } diff --git a/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll b/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll index 98bf01ef37631..23e1698136f5e 100644 --- a/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll +++ b/llvm/test/Transforms/ConstraintElimination/gep-arithmetic.ll @@ -702,8 +702,7 @@ define i1 @test_nuw(ptr %p, i64 %x, i64 %y) { ; CHECK-NEXT: call void @llvm.assume(i1 [[CMP1]]) ; CHECK-NEXT: [[GEP_X:%.*]] = getelementptr nuw i8, ptr [[P:%.*]], i64 [[X]] ; CHECK-NEXT: [[GEP_Y:%.*]] = getelementptr nuw i8, ptr [[P]], i64 [[Y]] -; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt ptr [[GEP_X]], [[GEP_Y]] -; CHECK-NEXT: ret i1 [[CMP2]] +; CHECK-NEXT: ret i1 true ; %cmp1 = icmp ugt i64 %x, %y call void @llvm.assume(i1 %cmp1) @@ -720,8 +719,7 @@ define i1 @test_nuw_nested(ptr %p, i64 %x, i64 %y) { ; CHECK-NEXT: [[GEP_X:%.*]] = getelementptr nuw i8, ptr [[P:%.*]], i64 [[X]] ; CHECK-NEXT: [[GEP_X1:%.*]] = getelementptr nuw i8, ptr [[GEP_X]], i64 1 ; CHECK-NEXT: [[GEP_Y:%.*]] = getelementptr nuw i8, ptr [[P]], i64 [[Y]] -; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt ptr [[GEP_X1]], [[GEP_Y]] -; CHECK-NEXT: ret i1 [[CMP2]] +; CHECK-NEXT: ret i1 true ; %cmp1 = icmp ugt i64 %x, %y call void @llvm.assume(i1 %cmp1) From 3b904ae5ac5e9d759f3629e9a6b98f14bbfb304c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 4 Dec 2024 16:40:28 +0100 Subject: [PATCH 037/593] [libunwind][Haiku] Improve support (#115462) * Signal frame unwinding on x86_64 from X512 * Header search for commpage_defs.h on non-standard paths Unwind supported tests pass on Haiku x86_64 --------- Co-authored-by: Trung Nguyen --- libunwind/src/CMakeLists.txt | 16 ++++++++ libunwind/src/UnwindCursor.hpp | 72 ++++++++++++++++++++++++++++++++-- 2 files changed, 84 insertions(+), 4 deletions(-) diff --git a/libunwind/src/CMakeLists.txt b/libunwind/src/CMakeLists.txt index 2e18b10965633..e7ea57734cca9 100644 --- a/libunwind/src/CMakeLists.txt +++ b/libunwind/src/CMakeLists.txt @@ -113,6 +113,22 @@ if (HAIKU) add_compile_flags("-D_DEFAULT_SOURCE") add_compile_flags("-DPT_GNU_EH_FRAME=PT_EH_FRAME") + + find_path(LIBUNWIND_HAIKU_PRIVATE_HEADERS + "commpage_defs.h" + PATHS ${CMAKE_SYSTEM_INCLUDE_PATH} + PATH_SUFFIXES "/private/system" + NO_DEFAULT_PATH + REQUIRED) + + include_directories(SYSTEM "${LIBUNWIND_HAIKU_PRIVATE_HEADERS}") + if (LIBUNWIND_TARGET_TRIPLE) + if (${LIBUNWIND_TARGET_TRIPLE} MATCHES "^x86_64") + include_directories(SYSTEM "${LIBUNWIND_HAIKU_PRIVATE_HEADERS}/arch/x86_64") + endif() + else() + include_directories(SYSTEM "${LIBUNWIND_HAIKU_PRIVATE_HEADERS}/arch/${CMAKE_SYSTEM_PROCESSOR}") + endif() endif () string(REPLACE ";" " " LIBUNWIND_COMPILE_FLAGS "${LIBUNWIND_COMPILE_FLAGS}") diff --git a/libunwind/src/UnwindCursor.hpp b/libunwind/src/UnwindCursor.hpp index 32e6fb43d988f..3831d8e071ef3 100644 --- a/libunwind/src/UnwindCursor.hpp +++ b/libunwind/src/UnwindCursor.hpp @@ -1010,6 +1010,9 @@ class UnwindCursor : public AbstractUnwindCursor{ template int stepThroughSigReturn(Registers &) { return UNW_STEP_END; } +#elif defined(_LIBUNWIND_TARGET_HAIKU) + bool setInfoForSigReturn(); + int stepThroughSigReturn(); #endif #if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND) @@ -1313,7 +1316,8 @@ class UnwindCursor : public AbstractUnwindCursor{ unw_proc_info_t _info; bool _unwindInfoMissing; bool _isSignalFrame; -#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) +#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) || \ + defined(_LIBUNWIND_TARGET_HAIKU) bool _isSigReturn = false; #endif }; @@ -2549,7 +2553,8 @@ int UnwindCursor::stepWithTBTable(pint_t pc, tbtable *TBTable, template void UnwindCursor::setInfoBasedOnIPRegister(bool isReturnAddress) { -#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) +#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) || \ + defined(_LIBUNWIND_TARGET_HAIKU) _isSigReturn = false; #endif @@ -2673,7 +2678,8 @@ void UnwindCursor::setInfoBasedOnIPRegister(bool isReturnAddress) { } #endif // #if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND) -#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) +#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) || \ + defined(_LIBUNWIND_TARGET_HAIKU) if (setInfoForSigReturn()) return; #endif @@ -2749,6 +2755,63 @@ int UnwindCursor::stepThroughSigReturn(Registers_arm64 &) { _isSignalFrame = true; return UNW_STEP_SUCCESS; } + +#elif defined(_LIBUNWIND_TARGET_HAIKU) && defined(_LIBUNWIND_TARGET_X86_64) +#include +#include + +extern "C" { +extern void *__gCommPageAddress; +} + +template +bool UnwindCursor::setInfoForSigReturn() { +#if defined(_LIBUNWIND_TARGET_X86_64) + addr_t signal_handler = + (((addr_t *)__gCommPageAddress)[COMMPAGE_ENTRY_X86_SIGNAL_HANDLER] + + (addr_t)__gCommPageAddress); + addr_t signal_handler_ret = signal_handler + 45; +#endif + pint_t pc = static_cast(this->getReg(UNW_REG_IP)); + if (pc == signal_handler_ret) { + _info = {}; + _info.start_ip = signal_handler; + _info.end_ip = signal_handler_ret; + _isSigReturn = true; + return true; + } + return false; +} + +template +int UnwindCursor::stepThroughSigReturn() { + _isSignalFrame = true; + pint_t sp = _registers.getSP(); +#if defined(_LIBUNWIND_TARGET_X86_64) + vregs *regs = (vregs *)(sp + 0x70); + + _registers.setRegister(UNW_REG_IP, regs->rip); + _registers.setRegister(UNW_REG_SP, regs->rsp); + _registers.setRegister(UNW_X86_64_RAX, regs->rax); + _registers.setRegister(UNW_X86_64_RDX, regs->rdx); + _registers.setRegister(UNW_X86_64_RCX, regs->rcx); + _registers.setRegister(UNW_X86_64_RBX, regs->rbx); + _registers.setRegister(UNW_X86_64_RSI, regs->rsi); + _registers.setRegister(UNW_X86_64_RDI, regs->rdi); + _registers.setRegister(UNW_X86_64_RBP, regs->rbp); + _registers.setRegister(UNW_X86_64_R8, regs->r8); + _registers.setRegister(UNW_X86_64_R9, regs->r9); + _registers.setRegister(UNW_X86_64_R10, regs->r10); + _registers.setRegister(UNW_X86_64_R11, regs->r11); + _registers.setRegister(UNW_X86_64_R12, regs->r12); + _registers.setRegister(UNW_X86_64_R13, regs->r13); + _registers.setRegister(UNW_X86_64_R14, regs->r14); + _registers.setRegister(UNW_X86_64_R15, regs->r15); + // TODO: XMM +#endif + + return UNW_STEP_SUCCESS; +} #endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) && // defined(_LIBUNWIND_TARGET_AARCH64) @@ -2917,7 +2980,8 @@ template int UnwindCursor::step(bool stage2) { // Use unwinding info to modify register set as if function returned. int result; -#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) +#if defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) || \ + defined(_LIBUNWIND_TARGET_HAIKU) if (_isSigReturn) { result = this->stepThroughSigReturn(); } else From 7aec6dc477f8148ed066d10dfc7a012a51b6599c Mon Sep 17 00:00:00 2001 From: Timm Baeder Date: Wed, 4 Dec 2024 16:49:03 +0100 Subject: [PATCH 038/593] [clang][bytecode] Initialize bases when bitcasting (#117179) Base pointers do not get passed to the callback, so initialize them when iterating bases. --- clang/lib/AST/ByteCode/BitcastBuffer.h | 1 + .../lib/AST/ByteCode/InterpBuiltinBitCast.cpp | 38 ++++++++++++------- clang/lib/AST/ByteCode/Record.h | 1 + clang/test/AST/ByteCode/builtin-bit-cast.cpp | 5 +-- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/clang/lib/AST/ByteCode/BitcastBuffer.h b/clang/lib/AST/ByteCode/BitcastBuffer.h index 8442df5c60cf5..c7b170ceb168f 100644 --- a/clang/lib/AST/ByteCode/BitcastBuffer.h +++ b/clang/lib/AST/ByteCode/BitcastBuffer.h @@ -28,6 +28,7 @@ struct Bits { size_t getOffsetInByte() const { return N % 8; } bool isFullByte() const { return N % 8 == 0; } bool nonZero() const { return N != 0; } + bool isZero() const { return N == 0; } Bits operator-(Bits Other) { return Bits(N - Other.N); } Bits operator+(Bits Other) { return Bits(N + Other.N); } diff --git a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp index 2fae7f873ab11..8f7edaa18c74b 100644 --- a/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp +++ b/clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp @@ -127,6 +127,8 @@ static bool enumerateData(const Pointer &P, const Context &Ctx, Bits Offset, bool Ok = true; for (const Record::Field &Fi : R->fields()) { + if (Fi.isUnnamedBitField()) + continue; Pointer Elem = P.atField(Fi.Offset); Bits BitOffset = Offset + Bits(Layout.getFieldOffset(Fi.Decl->getFieldIndex())); @@ -138,6 +140,10 @@ static bool enumerateData(const Pointer &P, const Context &Ctx, Bits Offset, Layout.getBaseClassOffset(cast(B.Decl)); Bits BitOffset = Offset + Bits(Ctx.getASTContext().toBits(ByteOffset)); Ok = Ok && enumerateData(Elem, Ctx, BitOffset, BitsToRead, F); + // FIXME: We should only (need to) do this when bitcasting OUT of the + // buffer, not when copying data into it. + if (Ok) + Elem.initialize(); } return Ok; @@ -229,19 +235,29 @@ static bool readPointerToBuffer(const Context &Ctx, const Pointer &FromPtr, FromPtr, Ctx, Buffer.size(), [&](const Pointer &P, PrimType T, Bits BitOffset, bool PackedBools) -> bool { - // if (!P.isInitialized()) { - // assert(false && "Implement uninitialized value tracking"); - // return ReturnOnUninit; - // } + CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); + Bits BitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); + Bits FullBitWidth = BitWidth; + + if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) { + BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), + (unsigned)FullBitWidth.getQuantity())); + } else if (T == PT_Bool && PackedBools) + BitWidth = Bits(1); - // assert(P.isInitialized()); + if (BitWidth.isZero()) + return true; + + if (!P.isInitialized()) { + assert(false && "Implement uninitialized value tracking"); + return ReturnOnUninit; + } + + assert(P.isInitialized()); // nullptr_t is a PT_Ptr for us, but it's still not std::is_pointer_v. if (T == PT_Ptr) assert(false && "Implement casting to pointer types"); - CharUnits ObjectReprChars = ASTCtx.getTypeSizeInChars(P.getType()); - Bits BitWidth = Bits(ASTCtx.toBits(ObjectReprChars)); - Bits FullBitWidth = BitWidth; auto Buff = std::make_unique(ObjectReprChars.getQuantity()); // Work around floating point types that contain unused padding bytes. @@ -260,12 +276,6 @@ static bool readPointerToBuffer(const Context &Ctx, const Pointer &FromPtr, swapBytes(Buff.get(), NumBits.roundToBytes()); } else { - if (const FieldDecl *FD = P.getField(); FD && FD->isBitField()) - BitWidth = Bits(std::min(FD->getBitWidthValue(ASTCtx), - (unsigned)FullBitWidth.getQuantity())); - else if (T == PT_Bool && PackedBools) - BitWidth = Bits(1); - BITCAST_TYPE_SWITCH(T, { P.deref().bitcastToMemory(Buff.get()); }); if (llvm::sys::IsBigEndianHost) diff --git a/clang/lib/AST/ByteCode/Record.h b/clang/lib/AST/ByteCode/Record.h index 7a5c482e4efcc..686b5dbc431d9 100644 --- a/clang/lib/AST/ByteCode/Record.h +++ b/clang/lib/AST/ByteCode/Record.h @@ -30,6 +30,7 @@ class Record final { unsigned Offset; const Descriptor *Desc; bool isBitField() const { return Decl->isBitField(); } + bool isUnnamedBitField() const { return Decl->isUnnamedBitField(); } }; /// Describes a base class. diff --git a/clang/test/AST/ByteCode/builtin-bit-cast.cpp b/clang/test/AST/ByteCode/builtin-bit-cast.cpp index e956675b18b85..d3935b4f921b3 100644 --- a/clang/test/AST/ByteCode/builtin-bit-cast.cpp +++ b/clang/test/AST/ByteCode/builtin-bit-cast.cpp @@ -350,9 +350,8 @@ void test_record() { static_assert(t4 == tuple4{1, 2, 3, 4}); static_assert(check_round_trip(b)); - /// FIXME: We need to initialize the base pointers in the pointer we're bitcasting to. -// constexpr auto b2 = bit_cast(t4); -// static_assert(t4 == b2); + constexpr auto b2 = bit_cast(t4); + static_assert(t4 == b2); } void test_partially_initialized() { From 4e80c532c613cc93a43dcf71eaf6a30f96c27b6c Mon Sep 17 00:00:00 2001 From: Vladislav Dzhidzhoev Date: Wed, 4 Dec 2024 16:55:28 +0100 Subject: [PATCH 039/593] [lldb][tests] Fix passing pthread library to a linker for some API tests (#118530) Specify ENABLE_THREADS := YES within test's Makefile instead of passing -lpthread explicitly via the compiler's CFLAGS options. Refactoring fix. Co-authored-by: Vladimir Vereschaka --- .../aarch64_sme_z_registers/za_dynamic_resize/Makefile | 3 ++- .../aarch64_sve_registers/rw_access_dynamic_resize/Makefile | 3 ++- .../API/functionalities/process_save_core_minidump/Makefile | 2 +- lldb/test/API/tools/lldb-dap/threads/Makefile | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lldb/test/API/commands/register/register/aarch64_sme_z_registers/za_dynamic_resize/Makefile b/lldb/test/API/commands/register/register/aarch64_sme_z_registers/za_dynamic_resize/Makefile index 57d926b37d45c..bee03ac62a60f 100644 --- a/lldb/test/API/commands/register/register/aarch64_sme_z_registers/za_dynamic_resize/Makefile +++ b/lldb/test/API/commands/register/register/aarch64_sme_z_registers/za_dynamic_resize/Makefile @@ -1,5 +1,6 @@ C_SOURCES := main.c -CFLAGS_EXTRAS := -march=armv8-a+sve+sme -lpthread +CFLAGS_EXTRAS := -march=armv8-a+sve+sme +ENABLE_THREADS := YES include Makefile.rules diff --git a/lldb/test/API/commands/register/register/aarch64_sve_registers/rw_access_dynamic_resize/Makefile b/lldb/test/API/commands/register/register/aarch64_sve_registers/rw_access_dynamic_resize/Makefile index efa5ca913f6e2..1c65300b73738 100644 --- a/lldb/test/API/commands/register/register/aarch64_sve_registers/rw_access_dynamic_resize/Makefile +++ b/lldb/test/API/commands/register/register/aarch64_sve_registers/rw_access_dynamic_resize/Makefile @@ -1,5 +1,6 @@ C_SOURCES := main.c -CFLAGS_EXTRAS := -march=armv8-a+sve -lpthread +CFLAGS_EXTRAS := -march=armv8-a+sve +ENABLE_THREADS := YES include Makefile.rules diff --git a/lldb/test/API/functionalities/process_save_core_minidump/Makefile b/lldb/test/API/functionalities/process_save_core_minidump/Makefile index 2d177981fdde1..e9a26189f5dad 100644 --- a/lldb/test/API/functionalities/process_save_core_minidump/Makefile +++ b/lldb/test/API/functionalities/process_save_core_minidump/Makefile @@ -1,6 +1,6 @@ CXX_SOURCES := main.cpp -CFLAGS_EXTRAS := -lpthread +ENABLE_THREADS := YES include Makefile.rules diff --git a/lldb/test/API/tools/lldb-dap/threads/Makefile b/lldb/test/API/tools/lldb-dap/threads/Makefile index 121868fa8ec33..aa6b054685d61 100644 --- a/lldb/test/API/tools/lldb-dap/threads/Makefile +++ b/lldb/test/API/tools/lldb-dap/threads/Makefile @@ -1,4 +1,5 @@ C_SOURCES := main.c -CFLAGS_EXTRAS := -lpthread + +ENABLE_THREADS := YES include Makefile.rules From 4a7abfe0a7b9b43cc60115caab810f4c24e53f1c Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 4 Dec 2024 16:57:41 +0100 Subject: [PATCH 040/593] [InstCombine] Preserve nuw in OptimizePointerDifference If both the geps and the subs are nuw the new sub is also nuw. Proof: https://alive2.llvm.org/ce/z/mM8UvF --- .../InstCombine/InstCombineAddSub.cpp | 8 ++- llvm/test/Transforms/InstCombine/sub-gep.ll | 56 +++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp index 63725e4ca8113..b9f847d4d6640 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp @@ -2109,11 +2109,13 @@ Value *InstCombinerImpl::OptimizePointerDifference(Value *LHS, Value *RHS, // If we have a 2nd GEP of the same base pointer, subtract the offsets. // If both GEPs are inbounds, then the subtract does not have signed overflow. + // If both GEPs are nuw and the original sub is nuw, the new sub is also nuw. if (GEP2) { - bool GEP2IsInBounds = GEP2->isInBounds(); Value *Offset = EmitGEPOffset(GEP2, RewriteGEPs); - Result = Builder.CreateSub(Result, Offset, "gepdiff", /* NUW */ false, - GEP1IsInBounds && GEP2IsInBounds); + Result = Builder.CreateSub(Result, Offset, "gepdiff", + IsNUW && GEP1->hasNoUnsignedWrap() && + GEP2->hasNoUnsignedWrap(), + GEP1IsInBounds && GEP2->isInBounds()); } // If we have p - gep(p, ...) then we have to negate the result. diff --git a/llvm/test/Transforms/InstCombine/sub-gep.ll b/llvm/test/Transforms/InstCombine/sub-gep.ll index f7a54ab2141bd..5f336b49323ec 100644 --- a/llvm/test/Transforms/InstCombine/sub-gep.ll +++ b/llvm/test/Transforms/InstCombine/sub-gep.ll @@ -156,6 +156,62 @@ define i64 @test_inbounds_nuw_two_gep(ptr %base, i64 %idx, i64 %idx2) { ret i64 %d } +define i64 @test_nusw_two_gep(ptr %base, i64 %idx, i64 %idx2) { +; CHECK-LABEL: @test_nusw_two_gep( +; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[IDX2:%.*]], [[IDX:%.*]] +; CHECK-NEXT: [[GEPDIFF:%.*]] = shl i64 [[TMP1]], 2 +; CHECK-NEXT: ret i64 [[GEPDIFF]] +; + %p1 = getelementptr nusw [0 x i32], ptr %base, i64 0, i64 %idx + %p2 = getelementptr nusw [0 x i32], ptr %base, i64 0, i64 %idx2 + %i1 = ptrtoint ptr %p1 to i64 + %i2 = ptrtoint ptr %p2 to i64 + %d = sub i64 %i2, %i1 + ret i64 %d +} + +define i64 @test_nuw_two_gep(ptr %base, i64 %idx, i64 %idx2) { +; CHECK-LABEL: @test_nuw_two_gep( +; CHECK-NEXT: [[TMP1:%.*]] = sub nuw i64 [[IDX2:%.*]], [[IDX:%.*]] +; CHECK-NEXT: [[GEPDIFF:%.*]] = shl nuw i64 [[TMP1]], 2 +; CHECK-NEXT: ret i64 [[GEPDIFF]] +; + %p1 = getelementptr nuw [0 x i32], ptr %base, i64 0, i64 %idx + %p2 = getelementptr nuw [0 x i32], ptr %base, i64 0, i64 %idx2 + %i1 = ptrtoint ptr %p1 to i64 + %i2 = ptrtoint ptr %p2 to i64 + %d = sub nuw i64 %i2, %i1 + ret i64 %d +} + +define i64 @test_nuw_two_gep_missing_nuw_on_sub(ptr %base, i64 %idx, i64 %idx2) { +; CHECK-LABEL: @test_nuw_two_gep_missing_nuw_on_sub( +; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[IDX2:%.*]], [[IDX:%.*]] +; CHECK-NEXT: [[GEPDIFF:%.*]] = shl i64 [[TMP1]], 2 +; CHECK-NEXT: ret i64 [[GEPDIFF]] +; + %p1 = getelementptr nuw [0 x i32], ptr %base, i64 0, i64 %idx + %p2 = getelementptr nuw [0 x i32], ptr %base, i64 0, i64 %idx2 + %i1 = ptrtoint ptr %p1 to i64 + %i2 = ptrtoint ptr %p2 to i64 + %d = sub i64 %i2, %i1 + ret i64 %d +} + +define i64 @test_nuw_two_gep_missing_nuw_on_one_gep(ptr %base, i64 %idx, i64 %idx2) { +; CHECK-LABEL: @test_nuw_two_gep_missing_nuw_on_one_gep( +; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[IDX2:%.*]], [[IDX:%.*]] +; CHECK-NEXT: [[GEPDIFF:%.*]] = shl i64 [[TMP1]], 2 +; CHECK-NEXT: ret i64 [[GEPDIFF]] +; + %p1 = getelementptr nuw [0 x i32], ptr %base, i64 0, i64 %idx + %p2 = getelementptr [0 x i32], ptr %base, i64 0, i64 %idx2 + %i1 = ptrtoint ptr %p1 to i64 + %i2 = ptrtoint ptr %p2 to i64 + %d = sub nuw i64 %i2, %i1 + ret i64 %d +} + define i64 @test_inbounds_nuw_multi_index(ptr %base, i64 %idx, i64 %idx2) { ; CHECK-LABEL: @test_inbounds_nuw_multi_index( ; CHECK-NEXT: [[P2_IDX:%.*]] = shl nsw i64 [[IDX:%.*]], 3 From ba43a102a929eb8aae60580e14f3192a705e1805 Mon Sep 17 00:00:00 2001 From: cmtice Date: Wed, 4 Dec 2024 08:11:10 -0800 Subject: [PATCH 041/593] [LLDB] Fix error returns in CastToBasicType and CastToEnumType in ValueObject. (#117401) Update the error returns in ValueObject::CastToBasicType and ValueObject::CastToEnumType to create new errors and return a ValueObjectConstResult with the error, rather tnan updating the error in (and returning) the input ValueObject. --- lldb/source/ValueObject/ValueObject.cpp | 162 ++++++++++++------------ 1 file changed, 83 insertions(+), 79 deletions(-) diff --git a/lldb/source/ValueObject/ValueObject.cpp b/lldb/source/ValueObject/ValueObject.cpp index 86172ad1b561f..2864af107b925 100644 --- a/lldb/source/ValueObject/ValueObject.cpp +++ b/lldb/source/ValueObject/ValueObject.cpp @@ -3194,17 +3194,17 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { GetCompilerType().IsPointerType() || GetCompilerType().IsNullPtrType(); bool is_float = GetCompilerType().IsFloat(); bool is_integer = GetCompilerType().IsInteger(); + ExecutionContext exe_ctx(GetExecutionContextRef()); - if (!type.IsScalarType()) { - m_error = Status::FromErrorString("target type must be a scalar"); - return GetSP(); - } + if (!type.IsScalarType()) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("target type must be a scalar")); - if (!is_scalar && !is_enum && !is_pointer) { - m_error = - Status::FromErrorString("argument must be a scalar, enum, or pointer"); - return GetSP(); - } + if (!is_scalar && !is_enum && !is_pointer) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("argument must be a scalar, enum, or pointer")); lldb::TargetSP target = GetTargetSP(); uint64_t type_byte_size = 0; @@ -3215,16 +3215,15 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { val_byte_size = temp.value(); if (is_pointer) { - if (!type.IsInteger() && !type.IsBoolean()) { - m_error = - Status::FromErrorString("target type must be an integer or boolean"); - return GetSP(); - } - if (!type.IsBoolean() && type_byte_size < val_byte_size) { - m_error = Status::FromErrorString( - "target type cannot be smaller than the pointer type"); - return GetSP(); - } + if (!type.IsInteger() && !type.IsBoolean()) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("target type must be an integer or boolean")); + if (!type.IsBoolean() && type_byte_size < val_byte_size) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString( + "target type cannot be smaller than the pointer type")); } if (type.IsBoolean()) { @@ -3236,12 +3235,12 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { if (float_value_or_err) return ValueObject::CreateValueObjectFromBool( target, !float_value_or_err->isZero(), "result"); - else { - m_error = Status::FromErrorStringWithFormat( - "cannot get value as APFloat: %s", - llvm::toString(float_value_or_err.takeError()).c_str()); - return GetSP(); - } + else + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "cannot get value as APFloat: %s", + llvm::toString(float_value_or_err.takeError()).c_str())); } } @@ -3255,13 +3254,12 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { int_value_or_err->extOrTrunc(type_byte_size * CHAR_BIT); return ValueObject::CreateValueObjectFromAPInt(target, ext, type, "result"); - } else { - m_error = Status::FromErrorStringWithFormat( - "cannot get value as APSInt: %s", - llvm::toString(int_value_or_err.takeError()).c_str()); - ; - return GetSP(); - } + } else + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "cannot get value as APSInt: %s", + llvm::toString(int_value_or_err.takeError()).c_str())); } else if (is_scalar && is_float) { llvm::APSInt integer(type_byte_size * CHAR_BIT, !type.IsSigned()); bool is_exact; @@ -3273,12 +3271,12 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { // Casting floating point values that are out of bounds of the target // type is undefined behaviour. - if (status & llvm::APFloatBase::opInvalidOp) { - m_error = Status::FromErrorStringWithFormat( - "invalid type cast detected: %s", - llvm::toString(float_value_or_err.takeError()).c_str()); - return GetSP(); - } + if (status & llvm::APFloatBase::opInvalidOp) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "invalid type cast detected: %s", + llvm::toString(float_value_or_err.takeError()).c_str())); return ValueObject::CreateValueObjectFromAPInt(target, integer, type, "result"); } @@ -3297,10 +3295,11 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { return ValueObject::CreateValueObjectFromAPFloat(target, f, type, "result"); } else { - m_error = Status::FromErrorStringWithFormat( - "cannot get value as APSInt: %s", - llvm::toString(int_value_or_err.takeError()).c_str()); - return GetSP(); + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "cannot get value as APSInt: %s", + llvm::toString(int_value_or_err.takeError()).c_str())); } } else { if (is_integer) { @@ -3312,10 +3311,11 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { return ValueObject::CreateValueObjectFromAPFloat(target, f, type, "result"); } else { - m_error = Status::FromErrorStringWithFormat( - "cannot get value as APSInt: %s", - llvm::toString(int_value_or_err.takeError()).c_str()); - return GetSP(); + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "cannot get value as APSInt: %s", + llvm::toString(int_value_or_err.takeError()).c_str())); } } if (is_float) { @@ -3327,34 +3327,37 @@ lldb::ValueObjectSP ValueObject::CastToBasicType(CompilerType type) { return ValueObject::CreateValueObjectFromAPFloat(target, f, type, "result"); } else { - m_error = Status::FromErrorStringWithFormat( - "cannot get value as APFloat: %s", - llvm::toString(float_value_or_err.takeError()).c_str()); - return GetSP(); + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "cannot get value as APFloat: %s", + llvm::toString(float_value_or_err.takeError()).c_str())); } } } } - m_error = Status::FromErrorString("Unable to perform requested cast"); - return GetSP(); + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("Unable to perform requested cast")); } lldb::ValueObjectSP ValueObject::CastToEnumType(CompilerType type) { bool is_enum = GetCompilerType().IsEnumerationType(); bool is_integer = GetCompilerType().IsInteger(); bool is_float = GetCompilerType().IsFloat(); + ExecutionContext exe_ctx(GetExecutionContextRef()); - if (!is_enum && !is_integer && !is_float) { - m_error = Status::FromErrorString( - "argument must be an integer, a float, or an enum"); - return GetSP(); - } + if (!is_enum && !is_integer && !is_float) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString( + "argument must be an integer, a float, or an enum")); - if (!type.IsEnumerationType()) { - m_error = Status::FromErrorString("target type must be an enum"); - return GetSP(); - } + if (!type.IsEnumerationType()) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("target type must be an enum")); lldb::TargetSP target = GetTargetSP(); uint64_t byte_size = 0; @@ -3371,18 +3374,18 @@ lldb::ValueObjectSP ValueObject::CastToEnumType(CompilerType type) { // Casting floating point values that are out of bounds of the target // type is undefined behaviour. - if (status & llvm::APFloatBase::opInvalidOp) { - m_error = Status::FromErrorStringWithFormat( - "invalid type cast detected: %s", - llvm::toString(value_or_err.takeError()).c_str()); - return GetSP(); - } + if (status & llvm::APFloatBase::opInvalidOp) + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "invalid type cast detected: %s", + llvm::toString(value_or_err.takeError()).c_str())); return ValueObject::CreateValueObjectFromAPInt(target, integer, type, "result"); - } else { - m_error = Status::FromErrorString("cannot get value as APFloat"); - return GetSP(); - } + } else + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("cannot get value as APFloat")); } else { // Get the value as APSInt and extend or truncate it to the requested size. auto value_or_err = GetValueAsAPSInt(); @@ -3390,15 +3393,16 @@ lldb::ValueObjectSP ValueObject::CastToEnumType(CompilerType type) { llvm::APSInt ext = value_or_err->extOrTrunc(byte_size * CHAR_BIT); return ValueObject::CreateValueObjectFromAPInt(target, ext, type, "result"); - } else { - m_error = Status::FromErrorStringWithFormat( - "cannot get value as APSInt: %s", - llvm::toString(value_or_err.takeError()).c_str()); - return GetSP(); - } + } else + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorStringWithFormat( + "cannot get value as APSInt: %s", + llvm::toString(value_or_err.takeError()).c_str())); } - m_error = Status::FromErrorString("Cannot perform requested cast"); - return GetSP(); + return ValueObjectConstResult::Create( + exe_ctx.GetBestExecutionContextScope(), + Status::FromErrorString("Cannot perform requested cast")); } ValueObject::EvaluationPoint::EvaluationPoint() : m_mod_id(), m_exe_ctx_ref() {} From b79007d8a6fed51ec2e06aeaec31968122cfcd09 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 4 Dec 2024 17:14:48 +0100 Subject: [PATCH 042/593] [IR] Fix accumulateConstantOffset() on zero-index GEP These are degenerate but not malformed, so make sure we don't crash. --- llvm/lib/IR/Operator.cpp | 2 +- llvm/unittests/IR/InstructionsTest.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/llvm/lib/IR/Operator.cpp b/llvm/lib/IR/Operator.cpp index 740ad4a8c0a3c..39e5463cb6fc3 100644 --- a/llvm/lib/IR/Operator.cpp +++ b/llvm/lib/IR/Operator.cpp @@ -125,7 +125,7 @@ bool GEPOperator::accumulateConstantOffset( Type *SourceType, ArrayRef Index, const DataLayout &DL, APInt &Offset, function_ref ExternalAnalysis) { // Fast path for canonical getelementptr i8 form. - if (SourceType->isIntegerTy(8) && !ExternalAnalysis) { + if (SourceType->isIntegerTy(8) && !Index.empty() && !ExternalAnalysis) { auto *CI = dyn_cast(Index.front()); if (CI && CI->getType()->isIntegerTy()) { Offset += CI->getValue().sextOrTrunc(Offset.getBitWidth()); diff --git a/llvm/unittests/IR/InstructionsTest.cpp b/llvm/unittests/IR/InstructionsTest.cpp index b4dbc4ed435aa..a46f3ca5ab5ed 100644 --- a/llvm/unittests/IR/InstructionsTest.cpp +++ b/llvm/unittests/IR/InstructionsTest.cpp @@ -898,6 +898,20 @@ TEST(InstructionsTest, GEPIndices) { delete GEPI; } +TEST(InstructionsTest, ZeroIndexGEP) { + LLVMContext Context; + DataLayout DL; + Type *PtrTy = PointerType::getUnqual(Context); + auto *GEP = GetElementPtrInst::Create(Type::getInt8Ty(Context), + PoisonValue::get(PtrTy), {}); + + APInt Offset(DL.getIndexTypeSizeInBits(PtrTy), 0); + EXPECT_TRUE(GEP->accumulateConstantOffset(DL, Offset)); + EXPECT_TRUE(Offset.isZero()); + + delete GEP; +} + TEST(InstructionsTest, SwitchInst) { LLVMContext C; From 66ed8fb9739402ae51b790a3541a07dfa85ff174 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 4 Dec 2024 17:20:04 +0100 Subject: [PATCH 043/593] [InstCombine] Fix use after free Make sure we only access cached nowrap flags. --- .../Transforms/InstCombine/InstCombineAddSub.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp index b9f847d4d6640..ea7942ef97811 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp @@ -2092,18 +2092,18 @@ Value *InstCombinerImpl::OptimizePointerDifference(Value *LHS, Value *RHS, // To avoid duplicating the offset arithmetic, rewrite the GEP to use the // computed offset. This may erase the original GEP, so be sure to cache the - // inbounds flag before emitting the offset. + // nowrap flags before emitting the offset. // TODO: We should probably do this even if there is only one GEP. bool RewriteGEPs = GEP2 != nullptr; // Emit the offset of the GEP and an intptr_t. - bool GEP1IsInBounds = GEP1->isInBounds(); + GEPNoWrapFlags GEP1NW = GEP1->getNoWrapFlags(); Value *Result = EmitGEPOffset(GEP1, RewriteGEPs); // If this is a single inbounds GEP and the original sub was nuw, // then the final multiplication is also nuw. if (auto *I = dyn_cast(Result)) - if (IsNUW && !GEP2 && !Swapped && GEP1IsInBounds && + if (IsNUW && !GEP2 && !Swapped && GEP1NW.isInBounds() && I->getOpcode() == Instruction::Mul) I->setHasNoUnsignedWrap(); @@ -2111,11 +2111,12 @@ Value *InstCombinerImpl::OptimizePointerDifference(Value *LHS, Value *RHS, // If both GEPs are inbounds, then the subtract does not have signed overflow. // If both GEPs are nuw and the original sub is nuw, the new sub is also nuw. if (GEP2) { + GEPNoWrapFlags GEP2NW = GEP2->getNoWrapFlags(); Value *Offset = EmitGEPOffset(GEP2, RewriteGEPs); Result = Builder.CreateSub(Result, Offset, "gepdiff", - IsNUW && GEP1->hasNoUnsignedWrap() && - GEP2->hasNoUnsignedWrap(), - GEP1IsInBounds && GEP2->isInBounds()); + IsNUW && GEP1NW.hasNoUnsignedWrap() && + GEP2NW.hasNoUnsignedWrap(), + GEP1NW.isInBounds() && GEP2NW.isInBounds()); } // If we have p - gep(p, ...) then we have to negate the result. From 95e44d3670f402e0cb9b78fa3cce20d8edc1ac77 Mon Sep 17 00:00:00 2001 From: Alexander Shaposhnikov Date: Wed, 4 Dec 2024 08:27:08 -0800 Subject: [PATCH 044/593] [msan] Add handling for sse41_round_pd/sse41_round_ps (#118441) Add handling for sse41_round_pd/sse41_round_ps similarly to maybeHandleSimpleNomemIntrinsic. Test plan: ninja check-all --- .../Instrumentation/MemorySanitizer.cpp | 21 +++++++++++++++++++ .../X86/sse41-intrinsics-x86.ll | 18 ++-------------- .../i386/sse41-intrinsics-i386.ll | 18 ++-------------- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp index 934500509873f..b9e92e0d66df2 100644 --- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -3832,6 +3832,21 @@ struct MemorySanitizerVisitor : public InstVisitor { setOriginForNaryOp(I); } + // _mm_round_ps / _mm_round_ps. + // Similar to maybeHandleSimpleNomemIntrinsic except + // the second argument is guranteed to be a constant integer. + void handleRoundPdPsIntrinsic(IntrinsicInst &I) { + assert(I.getArgOperand(0)->getType() == I.getType()); + unsigned NumArgOperands = I.arg_size(); + assert(NumArgOperands == 2); + assert(isa(I.getArgOperand(1))); + + IRBuilder<> IRB(&I); + ShadowAndOriginCombiner SC(this, IRB); + SC.Add(I.getArgOperand(0)); + SC.Done(&I); + } + // Instrument abs intrinsic. // handleUnknownIntrinsic can't handle it because of the last // is_int_min_poison argument which does not match the result type. @@ -4327,10 +4342,16 @@ struct MemorySanitizerVisitor : public InstVisitor { handlePclmulIntrinsic(I); break; + case Intrinsic::x86_sse41_round_pd: + case Intrinsic::x86_sse41_round_ps: + handleRoundPdPsIntrinsic(I); + break; + case Intrinsic::x86_sse41_round_sd: case Intrinsic::x86_sse41_round_ss: handleUnarySdSsIntrinsic(I); break; + case Intrinsic::x86_sse2_max_sd: case Intrinsic::x86_sse_max_ss: case Intrinsic::x86_sse2_min_sd: diff --git a/llvm/test/Instrumentation/MemorySanitizer/X86/sse41-intrinsics-x86.ll b/llvm/test/Instrumentation/MemorySanitizer/X86/sse41-intrinsics-x86.ll index f5e8452fd0d58..1fcab72d571ea 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/X86/sse41-intrinsics-x86.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/X86/sse41-intrinsics-x86.ll @@ -320,15 +320,8 @@ define <2 x double> @test_x86_sse41_round_pd(<2 x double> %a0) #0 { ; CHECK-LABEL: @test_x86_sse41_round_pd( ; CHECK-NEXT: [[TMP1:%.*]] = load <2 x i64>, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @llvm.donothing() -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <2 x i64> [[TMP1]] to i128 -; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i128 [[TMP2]], 0 -; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP3:%.*]], label [[TMP4:%.*]], !prof [[PROF1]] -; CHECK: 3: -; CHECK-NEXT: call void @__msan_warning_noreturn() -; CHECK-NEXT: unreachable -; CHECK: 4: ; CHECK-NEXT: [[RES:%.*]] = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> [[A0:%.*]], i32 7) -; CHECK-NEXT: store <2 x i64> zeroinitializer, ptr @__msan_retval_tls, align 8 +; CHECK-NEXT: store <2 x i64> [[TMP1]], ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret <2 x double> [[RES]] ; %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1] @@ -341,15 +334,8 @@ define <4 x float> @test_x86_sse41_round_ps(<4 x float> %a0) #0 { ; CHECK-LABEL: @test_x86_sse41_round_ps( ; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i32>, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @llvm.donothing() -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <4 x i32> [[TMP1]] to i128 -; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i128 [[TMP2]], 0 -; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP3:%.*]], label [[TMP4:%.*]], !prof [[PROF1]] -; CHECK: 3: -; CHECK-NEXT: call void @__msan_warning_noreturn() -; CHECK-NEXT: unreachable -; CHECK: 4: ; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> [[A0:%.*]], i32 7) -; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr @__msan_retval_tls, align 8 +; CHECK-NEXT: store <4 x i32> [[TMP1]], ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret <4 x float> [[RES]] ; %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1] diff --git a/llvm/test/Instrumentation/MemorySanitizer/i386/sse41-intrinsics-i386.ll b/llvm/test/Instrumentation/MemorySanitizer/i386/sse41-intrinsics-i386.ll index a3bda12e395e6..e51c53375d2b5 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/i386/sse41-intrinsics-i386.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/i386/sse41-intrinsics-i386.ll @@ -335,15 +335,8 @@ define <2 x double> @test_x86_sse41_round_pd(<2 x double> %a0) #0 { ; CHECK-NEXT: [[TMP1:%.*]] = load <2 x i64>, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8 ; CHECK-NEXT: call void @llvm.donothing() -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <2 x i64> [[TMP1]] to i128 -; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i128 [[TMP2]], 0 -; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP6:%.*]], label [[TMP5:%.*]], !prof [[PROF1]] -; CHECK: 4: -; CHECK-NEXT: call void @__msan_warning_noreturn() -; CHECK-NEXT: unreachable -; CHECK: 5: ; CHECK-NEXT: [[RES:%.*]] = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> [[A0:%.*]], i32 7) -; CHECK-NEXT: store <2 x i64> zeroinitializer, ptr @__msan_retval_tls, align 8 +; CHECK-NEXT: store <2 x i64> [[TMP1]], ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret <2 x double> [[RES]] ; %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1] @@ -357,15 +350,8 @@ define <4 x float> @test_x86_sse41_round_ps(<4 x float> %a0) #0 { ; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i32>, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8 ; CHECK-NEXT: call void @llvm.donothing() -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <4 x i32> [[TMP1]] to i128 -; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i128 [[TMP2]], 0 -; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP6:%.*]], label [[TMP5:%.*]], !prof [[PROF1]] -; CHECK: 4: -; CHECK-NEXT: call void @__msan_warning_noreturn() -; CHECK-NEXT: unreachable -; CHECK: 5: ; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> [[A0:%.*]], i32 7) -; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr @__msan_retval_tls, align 8 +; CHECK-NEXT: store <4 x i32> [[TMP1]], ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret <4 x float> [[RES]] ; %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1] From 1b95e76d8f10725f73c706881ccc49669e151f38 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 4 Dec 2024 08:31:40 -0800 Subject: [PATCH 045/593] [Instrumentation] Fix a warning This patch fixes: llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp:3840:14: error: unused variable 'NumArgOperands' [-Werror,-Wunused-variable] --- llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp index b9e92e0d66df2..5c419c6374bdd 100644 --- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -3837,8 +3837,7 @@ struct MemorySanitizerVisitor : public InstVisitor { // the second argument is guranteed to be a constant integer. void handleRoundPdPsIntrinsic(IntrinsicInst &I) { assert(I.getArgOperand(0)->getType() == I.getType()); - unsigned NumArgOperands = I.arg_size(); - assert(NumArgOperands == 2); + assert(I.arg_size() == 2); assert(isa(I.getArgOperand(1))); IRBuilder<> IRB(&I); From 85d15bd130930c96533419b0fc2e66d86b84af42 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 4 Dec 2024 16:36:00 +0000 Subject: [PATCH 046/593] [TTI][X86] getMemoryOpCost - reduced costs when loading uniform values due to value reuse (#118642) Similar to what we do for broadcast shuffles, when legalising load costs, if the value is known to be uniform, then we will only load a single vector and reuse this across the split legalised registers. Fixes #111126 --- .../lib/Target/X86/X86TargetTransformInfo.cpp | 29 +++++++----- .../SLPVectorizer/X86/store-constant.ll | 45 +++++-------------- 2 files changed, 28 insertions(+), 46 deletions(-) diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp index 3b424bbb53e5b..cae72c4210352 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp @@ -5237,6 +5237,23 @@ InstructionCost X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, CurrOpSizeBytes != 1) break; // Try smalled vector size. + // This isn't exactly right. We're using slow unaligned 32-byte accesses + // as a proxy for a double-pumped AVX memory interface such as on + // Sandybridge. + // Sub-32-bit loads/stores will be slower either with PINSR*/PEXTR* or + // will be scalarized. + if (CurrOpSizeBytes == 32 && ST->isUnalignedMem32Slow()) + Cost += 2; + else if (CurrOpSizeBytes < 4) + Cost += 2; + else + Cost += 1; + + // If we're loading a uniform value, then we don't need to split the load, + // loading just a single (widest) vector can be reused by all splits. + if (IsLoad && OpInfo.isUniform()) + return Cost; + bool Is0thSubVec = (NumEltDone() % LT.second.getVectorNumElements()) == 0; // If we have fully processed the previous reg, we need to replenish it. @@ -5265,18 +5282,6 @@ InstructionCost X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, !IsLoad, CostKind); } - // This isn't exactly right. We're using slow unaligned 32-byte accesses - // as a proxy for a double-pumped AVX memory interface such as on - // Sandybridge. - // Sub-32-bit loads/stores will be slower either with PINSR*/PEXTR* or - // will be scalarized. - if (CurrOpSizeBytes == 32 && ST->isUnalignedMem32Slow()) - Cost += 2; - else if (CurrOpSizeBytes < 4) - Cost += 2; - else - Cost += 1; - SubVecEltsLeft -= CurrNumEltPerOp; NumEltRemaining -= CurrNumEltPerOp; Alignment = commonAlignment(Alignment.valueOrOne(), CurrOpSizeBytes); diff --git a/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll b/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll index 15c878daff26b..0b5e279dea5ba 100644 --- a/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/store-constant.ll @@ -1,42 +1,19 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py -; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64 | FileCheck %s --check-prefixes=SSE -; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v2 | FileCheck %s --check-prefixes=SSE -; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v3 | FileCheck %s --check-prefixes=AVX -; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v4 | FileCheck %s --check-prefixes=AVX +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64 | FileCheck %s +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v2 | FileCheck %s +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v3 | FileCheck %s +; RUN: opt < %s -S -mtriple=x86_64-- -passes=slp-vectorizer -mcpu=x86-64-v4 | FileCheck %s @arr = global [20 x i64] zeroinitializer, align 16 define void @PR111126() { -; SSE-LABEL: @PR111126( -; SSE-NEXT: store i64 1, ptr @arr, align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 8), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 16), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 24), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 40), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 48), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 56), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 64), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 72), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 80), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 88), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 96), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 104), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 112), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 120), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 128), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 136), align 8 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 144), align 16 -; SSE-NEXT: store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 152), align 8 -; SSE-NEXT: ret void -; -; AVX-LABEL: @PR111126( -; AVX-NEXT: store <4 x i64> splat (i64 1), ptr @arr, align 16 -; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 -; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 64), align 16 -; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 96), align 16 -; AVX-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 128), align 16 -; AVX-NEXT: ret void +; CHECK-LABEL: @PR111126( +; CHECK-NEXT: store <4 x i64> splat (i64 1), ptr @arr, align 16 +; CHECK-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 32), align 16 +; CHECK-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 64), align 16 +; CHECK-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 96), align 16 +; CHECK-NEXT: store <4 x i64> splat (i64 1), ptr getelementptr inbounds (i8, ptr @arr, i64 128), align 16 +; CHECK-NEXT: ret void ; store i64 1, ptr @arr, align 16 store i64 1, ptr getelementptr inbounds (i8, ptr @arr, i64 8), align 8 From 0a2116f4f96efc83bc729f0ed1a3d944b86cf1cb Mon Sep 17 00:00:00 2001 From: Andrea Faulds Date: Wed, 4 Dec 2024 17:42:06 +0100 Subject: [PATCH 047/593] [mlir][spirv][vector] Support converting vector.from_elements to SPIR-V (#118540) Closes #118098. --- .../VectorToSPIRV/VectorToSPIRV.cpp | 31 +++++++++++++++++-- .../VectorToSPIRV/vector-to-spirv.mlir | 29 +++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp b/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp index 656b1cb3e99a1..d3731db1ce55c 100644 --- a/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp +++ b/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp @@ -220,6 +220,32 @@ struct VectorFmaOpConvert final : public OpConversionPattern { } }; +struct VectorFromElementsOpConvert final + : public OpConversionPattern { + using OpConversionPattern::OpConversionPattern; + + LogicalResult + matchAndRewrite(vector::FromElementsOp op, OpAdaptor adaptor, + ConversionPatternRewriter &rewriter) const override { + Type resultType = getTypeConverter()->convertType(op.getType()); + if (!resultType) + return failure(); + OperandRange elements = op.getElements(); + if (isa(resultType)) { + // In the case with a single scalar operand / single-element result, + // pass through the scalar. + rewriter.replaceOp(op, elements[0]); + return success(); + } + // SPIRVTypeConverter rejects vectors with rank > 1, so multi-dimensional + // vector.from_elements cases should not need to be handled, only 1d. + assert(cast(resultType).getRank() == 1); + rewriter.replaceOpWithNewOp(op, resultType, + elements); + return success(); + } +}; + struct VectorInsertOpConvert final : public OpConversionPattern { using OpConversionPattern::OpConversionPattern; @@ -952,8 +978,9 @@ void mlir::populateVectorToSPIRVPatterns( VectorBitcastConvert, VectorBroadcastConvert, VectorExtractElementOpConvert, VectorExtractOpConvert, VectorExtractStridedSliceOpConvert, VectorFmaOpConvert, - VectorFmaOpConvert, VectorInsertElementOpConvert, - VectorInsertOpConvert, VectorReductionPattern, + VectorFmaOpConvert, VectorFromElementsOpConvert, + VectorInsertElementOpConvert, VectorInsertOpConvert, + VectorReductionPattern, VectorReductionPattern, VectorReductionFloatMinMax, VectorReductionFloatMinMax, VectorShapeCast, diff --git a/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir b/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir index 8796f153c4911..103148633bf97 100644 --- a/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir +++ b/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir @@ -217,6 +217,35 @@ func.func @extract_dynamic_cst(%arg0 : vector<4xf32>) -> f32 { // ----- +// CHECK-LABEL: @from_elements_0d +// CHECK-SAME: %[[ARG0:.+]]: f32 +// CHECK: %[[RETVAL:.+]] = builtin.unrealized_conversion_cast %[[ARG0]] +// CHECK: return %[[RETVAL]] +func.func @from_elements_0d(%arg0 : f32) -> vector { + %0 = vector.from_elements %arg0 : vector + return %0: vector +} + +// CHECK-LABEL: @from_elements_1x +// CHECK-SAME: %[[ARG0:.+]]: f32 +// CHECK: %[[RETVAL:.+]] = builtin.unrealized_conversion_cast %[[ARG0]] +// CHECK: return %[[RETVAL]] +func.func @from_elements_1x(%arg0 : f32) -> vector<1xf32> { + %0 = vector.from_elements %arg0 : vector<1xf32> + return %0: vector<1xf32> +} + +// CHECK-LABEL: @from_elements_3x +// CHECK-SAME: %[[ARG0:.+]]: f32, %[[ARG1:.+]]: f32, %[[ARG2:.+]]: f32 +// CHECK: %[[RETVAL:.+]] = spirv.CompositeConstruct %[[ARG0]], %[[ARG1]], %[[ARG2]] : (f32, f32, f32) -> vector<3xf32> +// CHECK: return %[[RETVAL]] +func.func @from_elements_3x(%arg0 : f32, %arg1 : f32, %arg2 : f32) -> vector<3xf32> { + %0 = vector.from_elements %arg0, %arg1, %arg2 : vector<3xf32> + return %0: vector<3xf32> +} + +// ----- + // CHECK-LABEL: @insert // CHECK-SAME: %[[V:.*]]: vector<4xf32>, %[[S:.*]]: f32 // CHECK: spirv.CompositeInsert %[[S]], %[[V]][2 : i32] : f32 into vector<4xf32> From d5ba143a6d8e8726c900dbfc381dab0e7d8b6a65 Mon Sep 17 00:00:00 2001 From: John Harrison Date: Wed, 4 Dec 2024 08:47:18 -0800 Subject: [PATCH 048/593] [lldb] Correct an issue when using Socket to listen on `localhost:0` on ipv4 and ipv6. (#118565) On systems supporting ting ipv4 and ipv6 the second socket to initialize will not update the listening address correctly after the call to `bind`. This results in the second address listed in `Socket::GetListeningConnectionURI` to have port `:0`, which is incorrect. To fix this, correct which address is used to detect the port and update the unit tests to cover this use case. Additionally, I updated the SocketTest's to only parameterize tests that can work on ipv4 or ipv6. This means tests like `SocketTest::DecodeHostAndPort` are only run once, instead of twice since they do not change behavior based on parameters. I also included a new unit test to cover listening on `localhost:0`, validating both sockets correctly list the updated port. --- lldb/source/Host/common/TCPSocket.cpp | 8 ++--- lldb/unittests/Host/SocketTest.cpp | 43 +++++++++++++++++++-------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/lldb/source/Host/common/TCPSocket.cpp b/lldb/source/Host/common/TCPSocket.cpp index d0055c3b6c44f..d3282ab58b818 100644 --- a/lldb/source/Host/common/TCPSocket.cpp +++ b/lldb/source/Host/common/TCPSocket.cpp @@ -216,11 +216,11 @@ Status TCPSocket::Listen(llvm::StringRef name, int backlog) { } if (host_port->port == 0) { - socklen_t sa_len = address.GetLength(); - if (getsockname(fd, &address.sockaddr(), &sa_len) == 0) - host_port->port = address.GetPort(); + socklen_t sa_len = listen_address.GetLength(); + if (getsockname(fd, &listen_address.sockaddr(), &sa_len) == 0) + host_port->port = listen_address.GetPort(); } - m_listen_sockets[fd] = address; + m_listen_sockets[fd] = listen_address; } if (m_listen_sockets.empty()) { diff --git a/lldb/unittests/Host/SocketTest.cpp b/lldb/unittests/Host/SocketTest.cpp index a74352c19725d..689ef4019c618 100644 --- a/lldb/unittests/Host/SocketTest.cpp +++ b/lldb/unittests/Host/SocketTest.cpp @@ -35,7 +35,7 @@ class SocketTest : public testing::TestWithParam { } }; -TEST_P(SocketTest, DecodeHostAndPort) { +TEST_F(SocketTest, DecodeHostAndPort) { EXPECT_THAT_EXPECTED(Socket::DecodeHostAndPort("localhost:1138"), llvm::HasValue(Socket::HostAndPort{"localhost", 1138})); @@ -63,9 +63,8 @@ TEST_P(SocketTest, DecodeHostAndPort) { EXPECT_THAT_EXPECTED(Socket::DecodeHostAndPort("*:65535"), llvm::HasValue(Socket::HostAndPort{"*", 65535})); - EXPECT_THAT_EXPECTED( - Socket::DecodeHostAndPort("[::1]:12345"), - llvm::HasValue(Socket::HostAndPort{"::1", 12345})); + EXPECT_THAT_EXPECTED(Socket::DecodeHostAndPort("[::1]:12345"), + llvm::HasValue(Socket::HostAndPort{"::1", 12345})); EXPECT_THAT_EXPECTED( Socket::DecodeHostAndPort("[abcd:12fg:AF58::1]:12345"), @@ -73,9 +72,10 @@ TEST_P(SocketTest, DecodeHostAndPort) { } #if LLDB_ENABLE_POSIX -TEST_P(SocketTest, DomainListenConnectAccept) { +TEST_F(SocketTest, DomainListenConnectAccept) { llvm::SmallString<64> Path; - std::error_code EC = llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", Path); + std::error_code EC = + llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", Path); ASSERT_FALSE(EC); llvm::sys::path::append(Path, "test"); @@ -88,7 +88,7 @@ TEST_P(SocketTest, DomainListenConnectAccept) { CreateDomainConnectedSockets(Path, &socket_a_up, &socket_b_up); } -TEST_P(SocketTest, DomainListenGetListeningConnectionURI) { +TEST_F(SocketTest, DomainListenGetListeningConnectionURI) { llvm::SmallString<64> Path; std::error_code EC = llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", Path); @@ -110,7 +110,7 @@ TEST_P(SocketTest, DomainListenGetListeningConnectionURI) { testing::ElementsAre(llvm::formatv("unix-connect://{0}", Path).str())); } -TEST_P(SocketTest, DomainMainLoopAccept) { +TEST_F(SocketTest, DomainMainLoopAccept) { llvm::SmallString<64> Path; std::error_code EC = llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", Path); @@ -270,6 +270,25 @@ TEST_P(SocketTest, TCPListen0GetListeningConnectionURI) { .str())); } +TEST_F(SocketTest, TCPListen0MultiListenerGetListeningConnectionURI) { + if (!HostSupportsIPv6() || !HostSupportsIPv4()) + return; + + llvm::Expected> sock = + Socket::TcpListen("localhost:0", 5); + ASSERT_THAT_EXPECTED(sock, llvm::Succeeded()); + ASSERT_TRUE(sock.get()->IsValid()); + + EXPECT_THAT(sock.get()->GetListeningConnectionURI(), + testing::UnorderedElementsAre( + llvm::formatv("connection://[::1]:{0}", + sock->get()->GetLocalPortNumber()) + .str(), + llvm::formatv("connection://[127.0.0.1]:{0}", + sock->get()->GetLocalPortNumber()) + .str())); +} + TEST_P(SocketTest, TCPGetConnectURI) { std::unique_ptr socket_a_up; std::unique_ptr socket_b_up; @@ -297,10 +316,10 @@ TEST_P(SocketTest, UDPGetConnectURI) { } #if LLDB_ENABLE_POSIX -TEST_P(SocketTest, DomainGetConnectURI) { +TEST_F(SocketTest, DomainGetConnectURI) { llvm::SmallString<64> domain_path; - std::error_code EC = - llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", domain_path); + std::error_code EC = llvm::sys::fs::createUniqueDirectory( + "DomainListenConnectAccept", domain_path); ASSERT_FALSE(EC); llvm::sys::path::append(domain_path, "test"); @@ -325,7 +344,7 @@ INSTANTIATE_TEST_SUITE_P( testing::Values(SocketTestParams{/*is_ipv6=*/false, /*localhost_ip=*/"127.0.0.1"}, SocketTestParams{/*is_ipv6=*/true, /*localhost_ip=*/"::1"}), - // Prints "SocketTests/SocketTest.DecodeHostAndPort/ipv4" etc. in test logs. + // Prints "SocketTests/SocketTest.TCPGetAddress/ipv4" etc. in test logs. [](const testing::TestParamInfo &info) { return info.param.is_ipv6 ? "ipv6" : "ipv4"; }); From 06c831d7fbb02600ded1f793eaaa142d849db2a2 Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Wed, 4 Dec 2024 08:48:12 -0800 Subject: [PATCH 049/593] [libc] rename newhdrgen to just hdrgen (#118545) Link: #117208 Fixes: #117254 --- libc/CMakeLists.txt | 2 +- libc/cmake/modules/LLVMLibCHeaderRules.cmake | 4 +- libc/docs/dev/header_generation.rst | 66 +++++------ libc/docs/dev/source_tree_layout.rst | 6 +- libc/hdrgen/CMakeLists.txt | 17 +++ .../classes/enumeration.py | 0 .../class_implementation/classes/function.py | 0 .../class_implementation/classes/macro.py | 0 .../class_implementation/classes/object.py | 0 .../class_implementation/classes/type.py | 0 libc/{newhdrgen => hdrgen}/gpu_headers.py | 0 libc/{newhdrgen => hdrgen}/header.py | 0 .../tests/expected_output/test_header.h | 0 .../tests/input/test_small.h.def | 0 .../tests/input/test_small.yaml | 0 .../tests/test_integration.py | 10 +- .../{newhdrgen => hdrgen}/yaml/arpa/inet.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/assert.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/ctype.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/dirent.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/dlfcn.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/elf.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/errno.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/fcntl.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/features.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/fenv.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/float.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/gpu/rpc.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/inttypes.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/limits.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/link.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/locale.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/malloc.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/math.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/pthread.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/sched.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/search.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/setjmp.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/signal.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/spawn.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/stdbit.yaml | 0 .../{newhdrgen => hdrgen}/yaml/stdckdint.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/stdfix.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/stdint.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/stdio.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/stdlib.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/string.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/strings.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/sys/auxv.yaml | 0 .../{newhdrgen => hdrgen}/yaml/sys/epoll.yaml | 0 .../{newhdrgen => hdrgen}/yaml/sys/ioctl.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/sys/mman.yaml | 0 .../{newhdrgen => hdrgen}/yaml/sys/prctl.yaml | 0 .../yaml/sys/random.yaml | 0 .../yaml/sys/resource.yaml | 0 .../yaml/sys/select.yaml | 0 .../yaml/sys/sendfile.yaml | 0 .../yaml/sys/socket.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/sys/stat.yaml | 0 .../yaml/sys/statvfs.yaml | 0 .../yaml/sys/syscall.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/sys/time.yaml | 0 .../{newhdrgen => hdrgen}/yaml/sys/types.yaml | 0 .../yaml/sys/utsname.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/sys/wait.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/termios.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/threads.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/time.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/uchar.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/unistd.yaml | 0 libc/{newhdrgen => hdrgen}/yaml/wchar.yaml | 0 .../yaml_functions_sorted.py | 0 libc/{newhdrgen => hdrgen}/yaml_to_classes.py | 0 libc/include/CMakeLists.txt | 112 +++++++++--------- libc/newhdrgen/CMakeLists.txt | 17 --- libc/src/math/docs/add_math_function.md | 2 +- 76 files changed, 115 insertions(+), 121 deletions(-) create mode 100644 libc/hdrgen/CMakeLists.txt rename libc/{newhdrgen => hdrgen}/class_implementation/classes/enumeration.py (100%) rename libc/{newhdrgen => hdrgen}/class_implementation/classes/function.py (100%) rename libc/{newhdrgen => hdrgen}/class_implementation/classes/macro.py (100%) rename libc/{newhdrgen => hdrgen}/class_implementation/classes/object.py (100%) rename libc/{newhdrgen => hdrgen}/class_implementation/classes/type.py (100%) rename libc/{newhdrgen => hdrgen}/gpu_headers.py (100%) rename libc/{newhdrgen => hdrgen}/header.py (100%) rename libc/{newhdrgen => hdrgen}/tests/expected_output/test_header.h (100%) rename libc/{newhdrgen => hdrgen}/tests/input/test_small.h.def (100%) rename libc/{newhdrgen => hdrgen}/tests/input/test_small.yaml (100%) rename libc/{newhdrgen => hdrgen}/tests/test_integration.py (85%) rename libc/{newhdrgen => hdrgen}/yaml/arpa/inet.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/assert.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/ctype.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/dirent.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/dlfcn.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/elf.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/errno.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/fcntl.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/features.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/fenv.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/float.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/gpu/rpc.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/inttypes.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/limits.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/link.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/locale.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/malloc.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/math.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/pthread.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sched.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/search.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/setjmp.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/signal.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/spawn.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/stdbit.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/stdckdint.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/stdfix.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/stdint.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/stdio.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/stdlib.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/string.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/strings.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/auxv.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/epoll.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/ioctl.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/mman.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/prctl.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/random.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/resource.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/select.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/sendfile.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/socket.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/stat.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/statvfs.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/syscall.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/time.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/types.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/utsname.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/sys/wait.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/termios.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/threads.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/time.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/uchar.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/unistd.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml/wchar.yaml (100%) rename libc/{newhdrgen => hdrgen}/yaml_functions_sorted.py (100%) rename libc/{newhdrgen => hdrgen}/yaml_to_classes.py (100%) delete mode 100644 libc/newhdrgen/CMakeLists.txt diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt index 11a355b120360..5196735bef4e7 100644 --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -57,7 +57,7 @@ if(LIBC_BUILD_GPU_LOADER OR ((NOT LLVM_RUNTIMES_BUILD) AND LLVM_LIBC_GPU_BUILD)) return() endif() -add_subdirectory(newhdrgen) +add_subdirectory(hdrgen) option(LIBC_CMAKE_VERBOSE_LOGGING "Log details warnings and notifications during CMake configuration." OFF) diff --git a/libc/cmake/modules/LLVMLibCHeaderRules.cmake b/libc/cmake/modules/LLVMLibCHeaderRules.cmake index 8f24cd4b3023b..31a88f0ef93be 100644 --- a/libc/cmake/modules/LLVMLibCHeaderRules.cmake +++ b/libc/cmake/modules/LLVMLibCHeaderRules.cmake @@ -112,7 +112,7 @@ function(add_gen_header target_name) add_custom_command( OUTPUT ${out_file} - COMMAND ${Python3_EXECUTABLE} ${LIBC_SOURCE_DIR}/newhdrgen/yaml_to_classes.py + COMMAND ${Python3_EXECUTABLE} ${LIBC_SOURCE_DIR}/hdrgen/yaml_to_classes.py ${yaml_file} --h_def_file ${def_file} ${entry_points} @@ -126,7 +126,7 @@ function(add_gen_header target_name) set(decl_out_file ${LIBC_INCLUDE_DIR}/llvm-libc-decls/${relative_path}) add_custom_command( OUTPUT ${decl_out_file} - COMMAND ${Python3_EXECUTABLE} ${LIBC_SOURCE_DIR}/newhdrgen/yaml_to_classes.py + COMMAND ${Python3_EXECUTABLE} ${LIBC_SOURCE_DIR}/hdrgen/yaml_to_classes.py ${yaml_file} --export-decls ${entry_points} diff --git a/libc/docs/dev/header_generation.rst b/libc/docs/dev/header_generation.rst index 0730b9a40c26a..2c586cc87b699 100644 --- a/libc/docs/dev/header_generation.rst +++ b/libc/docs/dev/header_generation.rst @@ -3,21 +3,15 @@ Generating Public and Internal headers ====================================== -This is a new implementation of the previous libc header generator. The old -header generator (libc-hdrgen aka "Headergen") was based on TableGen, which -created an awkward dependency on the rest of LLVM for our build system. By -creating a new standalone Headergen we can eliminate these dependencies for -easier cross compatibility. - -There are 3 main components of the new Headergen. The first component are the -YAML files that contain all the function header information and are separated by -header specification and standard. The second component are the classes that are -created for each component of the function header: macros, enumerations, types, -function, arguments, and objects. The third component is the Python script that -uses the class representation to deserialize YAML files into its specific -components and then reserializes the components into the function header. The -Python script also combines the generated header content with header definitions -and extra macro and type inclusions from the .h.def file. +There are 3 main components of the Headergen. The first component are the YAML +files that contain all the function header information and are separated by +header specification and standard. The second component are the classes that +are created for each component of the function header: macros, enumerations, +types, function, arguments, and objects. The third component is the Python +script that uses the class representation to deserialize YAML files into its +specific components and then reserializes the components into the function +header. The Python script also combines the generated header content with +header definitions and extra macro and type inclusions from the .h.def file. Instructions @@ -30,7 +24,7 @@ Required Versions: 1. Keep full-build mode on when building, otherwise headers will not be generated. 2. Once the build is complete, enter in the command line within the build - directory ``ninja check-newhdrgen`` to ensure that the integration tests are + directory ``ninja check-hdrgen`` to ensure that the integration tests are passing. 3. Then enter in the command line ``ninja libc`` to generate headers. Headers will be in ``build/projects/libc/include`` or ``build/libc/include`` in a @@ -50,41 +44,41 @@ To add through the command line: .. code-block:: none - python3 libc/newhdrgen/yaml_to_classes.py - libc/newhdrgen/yaml/[yaml_file.yaml] --add_function "" "" + python3 libc/hdrgen/yaml_to_classes.py + libc/hdrgen/yaml/[yaml_file.yaml] --add_function "" "" Example: .. code-block:: none - python3 libc/newhdrgen/yaml_to_classes.py - libc/newhdrgen/yaml/ctype.yaml --add_function "char" example_function + python3 libc/hdrgen/yaml_to_classes.py + libc/hdrgen/yaml/ctype.yaml --add_function "char" example_function "int, void, const void" stdc example_float example_attribute Keep in mind only the return_type and arguments have quotes around them. If you do not have any guards or attributes you may enter "null" for both. 3. Check the YAML file that the added function is present. You will also get a - generated header file with the new addition in the newhdrgen directory to + generated header file with the new addition in the hdrgen directory to examine. -If you want to sort the functions alphabetically you can check out libc/newhdrgen/yaml_functions_sorted.py. +If you want to sort the functions alphabetically you can check out libc/hdrgen/yaml_functions_sorted.py. Testing ------- -New Headergen has an integration test that you may run once you have configured -your CMake within the build directory. In the command line, enter the following: -``ninja check-newhdrgen``. The integration test is one test that ensures the -process of YAML to classes to generate headers works properly. If there are any -new additions on formatting headers, make sure the test is updated with the -specific addition. +Headergen has an integration test that you may run once you have configured +your CMake within the build directory. In the command line, enter the +following: ``ninja check-hdrgen``. The integration test is one test that +ensures the process of YAML to classes to generate headers works properly. If +there are any new additions on formatting headers, make sure the test is +updated with the specific addition. -Integration Test can be found in: ``libc/newhdrgen/tests/test_integration.py`` +Integration Test can be found in: ``libc/hdrgen/tests/test_integration.py`` File to modify if adding something to formatting: -``libc/newhdrgen/tests/expected_output/test_header.h`` +``libc/hdrgen/tests/expected_output/test_header.h`` Common Errors @@ -95,7 +89,7 @@ Common Errors .. code-block:: none - "/llvm-project/libc/newhdrgen/yaml_to_classes.py", line 67, in yaml_to_classes function_data["return_type"] + "/llvm-project/libc/hdrgen/yaml_to_classes.py", line 67, in yaml_to_classes function_data["return_type"] If you receive this error or any error pertaining to ``function_data[function_specific_component]`` while building the headers @@ -123,7 +117,7 @@ Common Errors missing. Ensure the correct style and required files are present: | ``[header_name]`` - | ``[../libc/newhdrgen/yaml/[yaml_file.yaml]`` + | ``[../libc/hdrgen/yaml/[yaml_file.yaml]`` | ``[header_name.h.def]`` | ``[header_name.h]`` | ``DEPENDS`` @@ -153,13 +147,13 @@ Common Errors .. code-block:: none - File "/llvm-project/libc/newhdrgen/header.py", line 60, in __str__ for + File "/llvm-project/libc/hdrgen/header.py", line 60, in __str__ for function in self.functions: AttributeError: 'HeaderFile' object has no attribute 'functions' When running ``ninja libc`` in the build directory to generate headers you may receive the error above. Essentially this means that in - ``libc/newhdrgen/header.py`` there is a missing attribute named functions. + ``libc/hdrgen/header.py`` there is a missing attribute named functions. Make sure all function components are defined within this file and there are no missing functions to add these components. @@ -190,12 +184,12 @@ Common Errors Sometimes the integration test will fail but that still means the process is working unless the comparison between the output and expected_output is not showing. If that is the case make sure in - ``libc/newhdrgen/tests/test_integration.py`` there are no missing arguments + ``libc/hdrgen/tests/test_integration.py`` there are no missing arguments that run through the script. If the integration tests are failing due to mismatching of lines or small errors in spacing that is nothing to worry about. If this is happening while you are making a new change to the formatting of the headers, then ensure the expected output file - ``libc/newhdrgen/tests/expected_output/test_header.h`` has the changes you + ``libc/hdrgen/tests/expected_output/test_header.h`` has the changes you are applying. diff --git a/libc/docs/dev/source_tree_layout.rst b/libc/docs/dev/source_tree_layout.rst index 8b423a1712cc8..0010f138317b5 100644 --- a/libc/docs/dev/source_tree_layout.rst +++ b/libc/docs/dev/source_tree_layout.rst @@ -15,9 +15,9 @@ directories:: - examples - fuzzing - hdr + - hdrgen - include - lib - - newhdrgen - src - startup - test @@ -89,13 +89,13 @@ The ``lib`` directory This directory contains a ``CMakeLists.txt`` file listing the targets for the public libraries ``libc.a``, ``libm.a`` etc. -The ``newhdrgen`` directory +The ``hdrgen`` directory --------------------------- This directory contains the sources and specifications for the types, macros and entrypoint functions. These definitions are organized in the ``yaml`` subdirectory and match the organization of the ``*.h.def`` files. This folder -also contains the python sources for new headergen, which is what generates the +also contains the python sources for headergen, which is what generates the headers. The ``src`` directory diff --git a/libc/hdrgen/CMakeLists.txt b/libc/hdrgen/CMakeLists.txt new file mode 100644 index 0000000000000..8ebde4e3e4588 --- /dev/null +++ b/libc/hdrgen/CMakeLists.txt @@ -0,0 +1,17 @@ +if(LLVM_LIBC_FULL_BUILD) + enable_testing() + + set(NEWHDGEN_TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests) + set(TEST_OUTPUT_DIR ${CMAKE_BINARY_DIR}/hdrgen/output) + + add_test( + NAME hdrgen_integration_test + COMMAND python3 ${NEWHDGEN_TESTS_DIR}/test_integration.py --output_dir ${TEST_OUTPUT_DIR} + ) + + add_custom_target(check-hdrgen + COMMAND ${CMAKE_CTEST_COMMAND} -R hdrgen_integration_test --output-on-failure + ) + + message(STATUS "Integration test for hdrgen added.") +endif() diff --git a/libc/newhdrgen/class_implementation/classes/enumeration.py b/libc/hdrgen/class_implementation/classes/enumeration.py similarity index 100% rename from libc/newhdrgen/class_implementation/classes/enumeration.py rename to libc/hdrgen/class_implementation/classes/enumeration.py diff --git a/libc/newhdrgen/class_implementation/classes/function.py b/libc/hdrgen/class_implementation/classes/function.py similarity index 100% rename from libc/newhdrgen/class_implementation/classes/function.py rename to libc/hdrgen/class_implementation/classes/function.py diff --git a/libc/newhdrgen/class_implementation/classes/macro.py b/libc/hdrgen/class_implementation/classes/macro.py similarity index 100% rename from libc/newhdrgen/class_implementation/classes/macro.py rename to libc/hdrgen/class_implementation/classes/macro.py diff --git a/libc/newhdrgen/class_implementation/classes/object.py b/libc/hdrgen/class_implementation/classes/object.py similarity index 100% rename from libc/newhdrgen/class_implementation/classes/object.py rename to libc/hdrgen/class_implementation/classes/object.py diff --git a/libc/newhdrgen/class_implementation/classes/type.py b/libc/hdrgen/class_implementation/classes/type.py similarity index 100% rename from libc/newhdrgen/class_implementation/classes/type.py rename to libc/hdrgen/class_implementation/classes/type.py diff --git a/libc/newhdrgen/gpu_headers.py b/libc/hdrgen/gpu_headers.py similarity index 100% rename from libc/newhdrgen/gpu_headers.py rename to libc/hdrgen/gpu_headers.py diff --git a/libc/newhdrgen/header.py b/libc/hdrgen/header.py similarity index 100% rename from libc/newhdrgen/header.py rename to libc/hdrgen/header.py diff --git a/libc/newhdrgen/tests/expected_output/test_header.h b/libc/hdrgen/tests/expected_output/test_header.h similarity index 100% rename from libc/newhdrgen/tests/expected_output/test_header.h rename to libc/hdrgen/tests/expected_output/test_header.h diff --git a/libc/newhdrgen/tests/input/test_small.h.def b/libc/hdrgen/tests/input/test_small.h.def similarity index 100% rename from libc/newhdrgen/tests/input/test_small.h.def rename to libc/hdrgen/tests/input/test_small.h.def diff --git a/libc/newhdrgen/tests/input/test_small.yaml b/libc/hdrgen/tests/input/test_small.yaml similarity index 100% rename from libc/newhdrgen/tests/input/test_small.yaml rename to libc/hdrgen/tests/input/test_small.yaml diff --git a/libc/newhdrgen/tests/test_integration.py b/libc/hdrgen/tests/test_integration.py similarity index 85% rename from libc/newhdrgen/tests/test_integration.py rename to libc/hdrgen/tests/test_integration.py index 33353785af233..8ea6d8a708073 100644 --- a/libc/newhdrgen/tests/test_integration.py +++ b/libc/hdrgen/tests/test_integration.py @@ -9,7 +9,7 @@ class TestHeaderGenIntegration(unittest.TestCase): def setUp(self): self.output_dir = Path( - args.output_dir if args.output_dir else "libc/newhdrgen/tests/output" + args.output_dir if args.output_dir else "libc/hdrgen/tests/output" ) self.maxDiff = None @@ -21,7 +21,7 @@ def run_script(self, yaml_file, h_def_file, output_dir, entry_points): h_def_file = self.source_dir / h_def_file command = [ "python3", - str(self.source_dir / "libc/newhdrgen/yaml_to_classes.py"), + str(self.source_dir / "libc/hdrgen/yaml_to_classes.py"), str(yaml_file), "--h_def_file", str(h_def_file), @@ -51,10 +51,10 @@ def compare_files(self, generated_file, expected_file): self.assertEqual(gen_content, exp_content) def test_generate_header(self): - yaml_file = "libc/newhdrgen/tests/input/test_small.yaml" - h_def_file = "libc/newhdrgen/tests/input/test_small.h.def" + yaml_file = "libc/hdrgen/tests/input/test_small.yaml" + h_def_file = "libc/hdrgen/tests/input/test_small.h.def" expected_output_file = ( - self.source_dir / "libc/newhdrgen/tests/expected_output/test_header.h" + self.source_dir / "libc/hdrgen/tests/expected_output/test_header.h" ) output_file = self.output_dir / "test_small.h" entry_points = {"func_b", "func_a", "func_c", "func_d", "func_e"} diff --git a/libc/newhdrgen/yaml/arpa/inet.yaml b/libc/hdrgen/yaml/arpa/inet.yaml similarity index 100% rename from libc/newhdrgen/yaml/arpa/inet.yaml rename to libc/hdrgen/yaml/arpa/inet.yaml diff --git a/libc/newhdrgen/yaml/assert.yaml b/libc/hdrgen/yaml/assert.yaml similarity index 100% rename from libc/newhdrgen/yaml/assert.yaml rename to libc/hdrgen/yaml/assert.yaml diff --git a/libc/newhdrgen/yaml/ctype.yaml b/libc/hdrgen/yaml/ctype.yaml similarity index 100% rename from libc/newhdrgen/yaml/ctype.yaml rename to libc/hdrgen/yaml/ctype.yaml diff --git a/libc/newhdrgen/yaml/dirent.yaml b/libc/hdrgen/yaml/dirent.yaml similarity index 100% rename from libc/newhdrgen/yaml/dirent.yaml rename to libc/hdrgen/yaml/dirent.yaml diff --git a/libc/newhdrgen/yaml/dlfcn.yaml b/libc/hdrgen/yaml/dlfcn.yaml similarity index 100% rename from libc/newhdrgen/yaml/dlfcn.yaml rename to libc/hdrgen/yaml/dlfcn.yaml diff --git a/libc/newhdrgen/yaml/elf.yaml b/libc/hdrgen/yaml/elf.yaml similarity index 100% rename from libc/newhdrgen/yaml/elf.yaml rename to libc/hdrgen/yaml/elf.yaml diff --git a/libc/newhdrgen/yaml/errno.yaml b/libc/hdrgen/yaml/errno.yaml similarity index 100% rename from libc/newhdrgen/yaml/errno.yaml rename to libc/hdrgen/yaml/errno.yaml diff --git a/libc/newhdrgen/yaml/fcntl.yaml b/libc/hdrgen/yaml/fcntl.yaml similarity index 100% rename from libc/newhdrgen/yaml/fcntl.yaml rename to libc/hdrgen/yaml/fcntl.yaml diff --git a/libc/newhdrgen/yaml/features.yaml b/libc/hdrgen/yaml/features.yaml similarity index 100% rename from libc/newhdrgen/yaml/features.yaml rename to libc/hdrgen/yaml/features.yaml diff --git a/libc/newhdrgen/yaml/fenv.yaml b/libc/hdrgen/yaml/fenv.yaml similarity index 100% rename from libc/newhdrgen/yaml/fenv.yaml rename to libc/hdrgen/yaml/fenv.yaml diff --git a/libc/newhdrgen/yaml/float.yaml b/libc/hdrgen/yaml/float.yaml similarity index 100% rename from libc/newhdrgen/yaml/float.yaml rename to libc/hdrgen/yaml/float.yaml diff --git a/libc/newhdrgen/yaml/gpu/rpc.yaml b/libc/hdrgen/yaml/gpu/rpc.yaml similarity index 100% rename from libc/newhdrgen/yaml/gpu/rpc.yaml rename to libc/hdrgen/yaml/gpu/rpc.yaml diff --git a/libc/newhdrgen/yaml/inttypes.yaml b/libc/hdrgen/yaml/inttypes.yaml similarity index 100% rename from libc/newhdrgen/yaml/inttypes.yaml rename to libc/hdrgen/yaml/inttypes.yaml diff --git a/libc/newhdrgen/yaml/limits.yaml b/libc/hdrgen/yaml/limits.yaml similarity index 100% rename from libc/newhdrgen/yaml/limits.yaml rename to libc/hdrgen/yaml/limits.yaml diff --git a/libc/newhdrgen/yaml/link.yaml b/libc/hdrgen/yaml/link.yaml similarity index 100% rename from libc/newhdrgen/yaml/link.yaml rename to libc/hdrgen/yaml/link.yaml diff --git a/libc/newhdrgen/yaml/locale.yaml b/libc/hdrgen/yaml/locale.yaml similarity index 100% rename from libc/newhdrgen/yaml/locale.yaml rename to libc/hdrgen/yaml/locale.yaml diff --git a/libc/newhdrgen/yaml/malloc.yaml b/libc/hdrgen/yaml/malloc.yaml similarity index 100% rename from libc/newhdrgen/yaml/malloc.yaml rename to libc/hdrgen/yaml/malloc.yaml diff --git a/libc/newhdrgen/yaml/math.yaml b/libc/hdrgen/yaml/math.yaml similarity index 100% rename from libc/newhdrgen/yaml/math.yaml rename to libc/hdrgen/yaml/math.yaml diff --git a/libc/newhdrgen/yaml/pthread.yaml b/libc/hdrgen/yaml/pthread.yaml similarity index 100% rename from libc/newhdrgen/yaml/pthread.yaml rename to libc/hdrgen/yaml/pthread.yaml diff --git a/libc/newhdrgen/yaml/sched.yaml b/libc/hdrgen/yaml/sched.yaml similarity index 100% rename from libc/newhdrgen/yaml/sched.yaml rename to libc/hdrgen/yaml/sched.yaml diff --git a/libc/newhdrgen/yaml/search.yaml b/libc/hdrgen/yaml/search.yaml similarity index 100% rename from libc/newhdrgen/yaml/search.yaml rename to libc/hdrgen/yaml/search.yaml diff --git a/libc/newhdrgen/yaml/setjmp.yaml b/libc/hdrgen/yaml/setjmp.yaml similarity index 100% rename from libc/newhdrgen/yaml/setjmp.yaml rename to libc/hdrgen/yaml/setjmp.yaml diff --git a/libc/newhdrgen/yaml/signal.yaml b/libc/hdrgen/yaml/signal.yaml similarity index 100% rename from libc/newhdrgen/yaml/signal.yaml rename to libc/hdrgen/yaml/signal.yaml diff --git a/libc/newhdrgen/yaml/spawn.yaml b/libc/hdrgen/yaml/spawn.yaml similarity index 100% rename from libc/newhdrgen/yaml/spawn.yaml rename to libc/hdrgen/yaml/spawn.yaml diff --git a/libc/newhdrgen/yaml/stdbit.yaml b/libc/hdrgen/yaml/stdbit.yaml similarity index 100% rename from libc/newhdrgen/yaml/stdbit.yaml rename to libc/hdrgen/yaml/stdbit.yaml diff --git a/libc/newhdrgen/yaml/stdckdint.yaml b/libc/hdrgen/yaml/stdckdint.yaml similarity index 100% rename from libc/newhdrgen/yaml/stdckdint.yaml rename to libc/hdrgen/yaml/stdckdint.yaml diff --git a/libc/newhdrgen/yaml/stdfix.yaml b/libc/hdrgen/yaml/stdfix.yaml similarity index 100% rename from libc/newhdrgen/yaml/stdfix.yaml rename to libc/hdrgen/yaml/stdfix.yaml diff --git a/libc/newhdrgen/yaml/stdint.yaml b/libc/hdrgen/yaml/stdint.yaml similarity index 100% rename from libc/newhdrgen/yaml/stdint.yaml rename to libc/hdrgen/yaml/stdint.yaml diff --git a/libc/newhdrgen/yaml/stdio.yaml b/libc/hdrgen/yaml/stdio.yaml similarity index 100% rename from libc/newhdrgen/yaml/stdio.yaml rename to libc/hdrgen/yaml/stdio.yaml diff --git a/libc/newhdrgen/yaml/stdlib.yaml b/libc/hdrgen/yaml/stdlib.yaml similarity index 100% rename from libc/newhdrgen/yaml/stdlib.yaml rename to libc/hdrgen/yaml/stdlib.yaml diff --git a/libc/newhdrgen/yaml/string.yaml b/libc/hdrgen/yaml/string.yaml similarity index 100% rename from libc/newhdrgen/yaml/string.yaml rename to libc/hdrgen/yaml/string.yaml diff --git a/libc/newhdrgen/yaml/strings.yaml b/libc/hdrgen/yaml/strings.yaml similarity index 100% rename from libc/newhdrgen/yaml/strings.yaml rename to libc/hdrgen/yaml/strings.yaml diff --git a/libc/newhdrgen/yaml/sys/auxv.yaml b/libc/hdrgen/yaml/sys/auxv.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/auxv.yaml rename to libc/hdrgen/yaml/sys/auxv.yaml diff --git a/libc/newhdrgen/yaml/sys/epoll.yaml b/libc/hdrgen/yaml/sys/epoll.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/epoll.yaml rename to libc/hdrgen/yaml/sys/epoll.yaml diff --git a/libc/newhdrgen/yaml/sys/ioctl.yaml b/libc/hdrgen/yaml/sys/ioctl.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/ioctl.yaml rename to libc/hdrgen/yaml/sys/ioctl.yaml diff --git a/libc/newhdrgen/yaml/sys/mman.yaml b/libc/hdrgen/yaml/sys/mman.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/mman.yaml rename to libc/hdrgen/yaml/sys/mman.yaml diff --git a/libc/newhdrgen/yaml/sys/prctl.yaml b/libc/hdrgen/yaml/sys/prctl.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/prctl.yaml rename to libc/hdrgen/yaml/sys/prctl.yaml diff --git a/libc/newhdrgen/yaml/sys/random.yaml b/libc/hdrgen/yaml/sys/random.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/random.yaml rename to libc/hdrgen/yaml/sys/random.yaml diff --git a/libc/newhdrgen/yaml/sys/resource.yaml b/libc/hdrgen/yaml/sys/resource.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/resource.yaml rename to libc/hdrgen/yaml/sys/resource.yaml diff --git a/libc/newhdrgen/yaml/sys/select.yaml b/libc/hdrgen/yaml/sys/select.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/select.yaml rename to libc/hdrgen/yaml/sys/select.yaml diff --git a/libc/newhdrgen/yaml/sys/sendfile.yaml b/libc/hdrgen/yaml/sys/sendfile.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/sendfile.yaml rename to libc/hdrgen/yaml/sys/sendfile.yaml diff --git a/libc/newhdrgen/yaml/sys/socket.yaml b/libc/hdrgen/yaml/sys/socket.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/socket.yaml rename to libc/hdrgen/yaml/sys/socket.yaml diff --git a/libc/newhdrgen/yaml/sys/stat.yaml b/libc/hdrgen/yaml/sys/stat.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/stat.yaml rename to libc/hdrgen/yaml/sys/stat.yaml diff --git a/libc/newhdrgen/yaml/sys/statvfs.yaml b/libc/hdrgen/yaml/sys/statvfs.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/statvfs.yaml rename to libc/hdrgen/yaml/sys/statvfs.yaml diff --git a/libc/newhdrgen/yaml/sys/syscall.yaml b/libc/hdrgen/yaml/sys/syscall.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/syscall.yaml rename to libc/hdrgen/yaml/sys/syscall.yaml diff --git a/libc/newhdrgen/yaml/sys/time.yaml b/libc/hdrgen/yaml/sys/time.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/time.yaml rename to libc/hdrgen/yaml/sys/time.yaml diff --git a/libc/newhdrgen/yaml/sys/types.yaml b/libc/hdrgen/yaml/sys/types.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/types.yaml rename to libc/hdrgen/yaml/sys/types.yaml diff --git a/libc/newhdrgen/yaml/sys/utsname.yaml b/libc/hdrgen/yaml/sys/utsname.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/utsname.yaml rename to libc/hdrgen/yaml/sys/utsname.yaml diff --git a/libc/newhdrgen/yaml/sys/wait.yaml b/libc/hdrgen/yaml/sys/wait.yaml similarity index 100% rename from libc/newhdrgen/yaml/sys/wait.yaml rename to libc/hdrgen/yaml/sys/wait.yaml diff --git a/libc/newhdrgen/yaml/termios.yaml b/libc/hdrgen/yaml/termios.yaml similarity index 100% rename from libc/newhdrgen/yaml/termios.yaml rename to libc/hdrgen/yaml/termios.yaml diff --git a/libc/newhdrgen/yaml/threads.yaml b/libc/hdrgen/yaml/threads.yaml similarity index 100% rename from libc/newhdrgen/yaml/threads.yaml rename to libc/hdrgen/yaml/threads.yaml diff --git a/libc/newhdrgen/yaml/time.yaml b/libc/hdrgen/yaml/time.yaml similarity index 100% rename from libc/newhdrgen/yaml/time.yaml rename to libc/hdrgen/yaml/time.yaml diff --git a/libc/newhdrgen/yaml/uchar.yaml b/libc/hdrgen/yaml/uchar.yaml similarity index 100% rename from libc/newhdrgen/yaml/uchar.yaml rename to libc/hdrgen/yaml/uchar.yaml diff --git a/libc/newhdrgen/yaml/unistd.yaml b/libc/hdrgen/yaml/unistd.yaml similarity index 100% rename from libc/newhdrgen/yaml/unistd.yaml rename to libc/hdrgen/yaml/unistd.yaml diff --git a/libc/newhdrgen/yaml/wchar.yaml b/libc/hdrgen/yaml/wchar.yaml similarity index 100% rename from libc/newhdrgen/yaml/wchar.yaml rename to libc/hdrgen/yaml/wchar.yaml diff --git a/libc/newhdrgen/yaml_functions_sorted.py b/libc/hdrgen/yaml_functions_sorted.py similarity index 100% rename from libc/newhdrgen/yaml_functions_sorted.py rename to libc/hdrgen/yaml_functions_sorted.py diff --git a/libc/newhdrgen/yaml_to_classes.py b/libc/hdrgen/yaml_to_classes.py similarity index 100% rename from libc/newhdrgen/yaml_to_classes.py rename to libc/hdrgen/yaml_to_classes.py diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt index 7fc67141996ec..6fdaa6c03c0c8 100644 --- a/libc/include/CMakeLists.txt +++ b/libc/include/CMakeLists.txt @@ -32,7 +32,7 @@ endmacro() add_header_macro( ctype - ../libc/newhdrgen/yaml/ctype.yaml + ../libc/hdrgen/yaml/ctype.yaml ctype.h.def ctype.h DEPENDS @@ -42,7 +42,7 @@ add_header_macro( add_header_macro( dirent - ../libc/newhdrgen/yaml/dirent.yaml + ../libc/hdrgen/yaml/dirent.yaml dirent.h.def dirent.h DEPENDS @@ -54,7 +54,7 @@ add_header_macro( add_header_macro( fcntl - ../libc/newhdrgen/yaml/fcntl.yaml + ../libc/hdrgen/yaml/fcntl.yaml fcntl.h.def fcntl.h DEPENDS @@ -70,7 +70,7 @@ add_header_macro( add_header_macro( dlfcn - ../libc/newhdrgen/yaml/dlfcn.yaml + ../libc/hdrgen/yaml/dlfcn.yaml dlfcn.h.def dlfcn.h DEPENDS @@ -80,7 +80,7 @@ add_header_macro( add_header_macro( features - ../libc/newhdrgen/yaml/features.yaml + ../libc/hdrgen/yaml/features.yaml features.h.def features.h DEPENDS @@ -90,7 +90,7 @@ add_header_macro( add_header_macro( fenv - ../libc/newhdrgen/yaml/fenv.yaml + ../libc/hdrgen/yaml/fenv.yaml fenv.h.def fenv.h DEPENDS @@ -102,7 +102,7 @@ add_header_macro( add_header_macro( inttypes - ../libc/newhdrgen/yaml/inttypes.yaml + ../libc/hdrgen/yaml/inttypes.yaml inttypes.h.def inttypes.h DEPENDS @@ -113,7 +113,7 @@ add_header_macro( add_header_macro( float - ../libc/newhdrgen/yaml/float.yaml + ../libc/hdrgen/yaml/float.yaml float.h.def float.h DEPENDS @@ -122,7 +122,7 @@ add_header_macro( add_header_macro( stdint - ../libc/newhdrgen/yaml/stdint.yaml + ../libc/hdrgen/yaml/stdint.yaml stdint.h.def stdint.h DEPENDS @@ -131,7 +131,7 @@ add_header_macro( add_header_macro( limits - ../libc/newhdrgen/yaml/limits.yaml + ../libc/hdrgen/yaml/limits.yaml limits.h.def limits.h DEPENDS @@ -140,7 +140,7 @@ add_header_macro( add_header_macro( malloc - ../libc/newhdrgen/yaml/malloc.yaml + ../libc/hdrgen/yaml/malloc.yaml malloc.h.def malloc.h DEPENDS @@ -150,7 +150,7 @@ add_header_macro( add_header_macro( math - ../libc/newhdrgen/yaml/math.yaml + ../libc/hdrgen/yaml/math.yaml math.h.def math.h DEPENDS @@ -165,7 +165,7 @@ add_header_macro( add_header_macro( stdfix - ../libc/newhdrgen/yaml/stdfix.yaml + ../libc/hdrgen/yaml/stdfix.yaml stdfix.h.def stdfix.h DEPENDS @@ -178,7 +178,7 @@ file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/arpa) add_header_macro( arpa_inet - ../libc/newhdrgen/yaml/arpa/inet.yaml + ../libc/hdrgen/yaml/arpa/inet.yaml arpa/inet.h.def arpa/inet.h DEPENDS @@ -187,7 +187,7 @@ add_header_macro( add_header_macro( assert - ../libc/newhdrgen/yaml/assert.yaml + ../libc/hdrgen/yaml/assert.yaml assert.h.def assert.h DEPENDS @@ -197,7 +197,7 @@ add_header_macro( add_header_macro( complex - ../libc/newhdrgen/yaml/complex.yaml + ../libc/hdrgen/yaml/complex.yaml complex.h.def complex.h DEPENDS @@ -207,7 +207,7 @@ add_header_macro( add_header_macro( setjmp - ../libc/newhdrgen/yaml/setjmp.yaml + ../libc/hdrgen/yaml/setjmp.yaml setjmp.h.def setjmp.h DEPENDS @@ -217,7 +217,7 @@ add_header_macro( add_header_macro( string - ../libc/newhdrgen/yaml/string.yaml + ../libc/hdrgen/yaml/string.yaml string.h.def string.h DEPENDS @@ -228,7 +228,7 @@ add_header_macro( add_header_macro( strings - ../libc/newhdrgen/yaml/strings.yaml + ../libc/hdrgen/yaml/strings.yaml strings.h.def strings.h DEPENDS @@ -238,7 +238,7 @@ add_header_macro( add_header_macro( search - ../libc/newhdrgen/yaml/search.yaml + ../libc/hdrgen/yaml/search.yaml search.h.def search.h DEPENDS @@ -252,7 +252,7 @@ add_header_macro( add_header_macro( time - ../libc/newhdrgen/yaml/time.yaml + ../libc/hdrgen/yaml/time.yaml time.h.def time.h DEPENDS @@ -268,7 +268,7 @@ add_header_macro( add_header_macro( threads - ../libc/newhdrgen/yaml/threads.yaml + ../libc/hdrgen/yaml/threads.yaml threads.h.def threads.h DEPENDS @@ -285,7 +285,7 @@ add_header_macro( add_header_macro( errno - ../libc/newhdrgen/yaml/errno.yaml + ../libc/hdrgen/yaml/errno.yaml errno.h.def errno.h DEPENDS @@ -295,7 +295,7 @@ add_header_macro( add_header_macro( signal - ../libc/newhdrgen/yaml/signal.yaml + ../libc/hdrgen/yaml/signal.yaml signal.h.def signal.h DEPENDS @@ -311,7 +311,7 @@ add_header_macro( add_header_macro( stdbit - ../libc/newhdrgen/yaml/stdbit.yaml + ../libc/hdrgen/yaml/stdbit.yaml stdbit.h.def stdbit.h DEPENDS @@ -321,7 +321,7 @@ add_header_macro( add_header_macro( stdckdint - ../libc/newhdrgen/yaml/stdckdint.yaml + ../libc/hdrgen/yaml/stdckdint.yaml stdckdint.h.def stdckdint.h DEPENDS @@ -331,7 +331,7 @@ add_header_macro( add_header_macro( stdio - ../libc/newhdrgen/yaml/stdio.yaml + ../libc/hdrgen/yaml/stdio.yaml stdio.h.def stdio.h DEPENDS @@ -347,7 +347,7 @@ add_header_macro( add_header_macro( stdlib - ../libc/newhdrgen/yaml/stdlib.yaml + ../libc/hdrgen/yaml/stdlib.yaml stdlib.h.def stdlib.h DEPENDS @@ -366,7 +366,7 @@ add_header_macro( add_header_macro( unistd - ../libc/newhdrgen/yaml/unistd.yaml + ../libc/hdrgen/yaml/unistd.yaml unistd.h.def unistd.h DEPENDS @@ -385,7 +385,7 @@ add_header_macro( add_header_macro( pthread - ../libc/newhdrgen/yaml/pthread.yaml + ../libc/hdrgen/yaml/pthread.yaml pthread.h.def pthread.h DEPENDS @@ -408,7 +408,7 @@ add_header_macro( add_header_macro( sched - ../libc/newhdrgen/yaml/sched.yaml + ../libc/hdrgen/yaml/sched.yaml sched.h.def sched.h DEPENDS @@ -425,7 +425,7 @@ add_header_macro( add_header_macro( spawn - ../libc/newhdrgen/yaml/spawn.yaml + ../libc/hdrgen/yaml/spawn.yaml spawn.h.def spawn.h DEPENDS @@ -438,7 +438,7 @@ add_header_macro( add_header_macro( link - ../libc/newhdrgen/yaml/link.yaml + ../libc/hdrgen/yaml/link.yaml link.h.def link.h DEPENDS @@ -448,7 +448,7 @@ add_header_macro( add_header_macro( elf - ../libc/newhdrgen/yaml/elf.yaml + ../libc/hdrgen/yaml/elf.yaml elf.h.def elf.h DEPENDS @@ -462,7 +462,7 @@ file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/sys) add_header_macro( sys_auxv - ../libc/newhdrgen/yaml/sys/auxv.yaml + ../libc/hdrgen/yaml/sys/auxv.yaml sys/auxv.h.def sys/auxv.h DEPENDS @@ -472,7 +472,7 @@ add_header_macro( add_header_macro( sys_epoll - ../libc/newhdrgen/yaml/sys/epoll.yaml + ../libc/hdrgen/yaml/sys/epoll.yaml sys/epoll.h.def sys/epoll.h DEPENDS @@ -485,7 +485,7 @@ add_header_macro( add_header_macro( sys_ioctl - ../libc/newhdrgen/yaml/sys/ioctl.yaml + ../libc/hdrgen/yaml/sys/ioctl.yaml sys/ioctl.h.def sys/ioctl.h DEPENDS @@ -495,7 +495,7 @@ add_header_macro( add_header_macro( sys_mman - ../libc/newhdrgen/yaml/sys/mman.yaml + ../libc/hdrgen/yaml/sys/mman.yaml sys/mman.h.def sys/mman.h DEPENDS @@ -508,7 +508,7 @@ add_header_macro( add_header_macro( sys_prctl - ../libc/newhdrgen/yaml/sys/prctl.yaml + ../libc/hdrgen/yaml/sys/prctl.yaml sys/prctl.h.def sys/prctl.h DEPENDS @@ -525,7 +525,7 @@ add_header( add_header_macro( sys_random - ../libc/newhdrgen/yaml/sys/random.yaml + ../libc/hdrgen/yaml/sys/random.yaml sys/random.h.def sys/random.h DEPENDS @@ -537,7 +537,7 @@ add_header_macro( add_header_macro( sys_resource - ../libc/newhdrgen/yaml/sys/resource.yaml + ../libc/hdrgen/yaml/sys/resource.yaml sys/resource.h.def sys/resource.h DEPENDS @@ -549,7 +549,7 @@ add_header_macro( add_header_macro( sys_stat - ../libc/newhdrgen/yaml/sys/stat.yaml + ../libc/hdrgen/yaml/sys/stat.yaml sys/stat.h.def sys/stat.h DEPENDS @@ -571,7 +571,7 @@ add_header_macro( add_header_macro( sys_select - ../libc/newhdrgen/yaml/sys/select.yaml + ../libc/hdrgen/yaml/sys/select.yaml sys/select.h.def sys/select.h DEPENDS @@ -587,7 +587,7 @@ add_header_macro( add_header_macro( sys_sendfile - ../libc/newhdrgen/yaml/sys/sendfile.yaml + ../libc/hdrgen/yaml/sys/sendfile.yaml sys/sendfile.h.def sys/sendfile.h DEPENDS @@ -599,7 +599,7 @@ add_header_macro( add_header_macro( sys_socket - ../libc/newhdrgen/yaml/sys/socket.yaml + ../libc/hdrgen/yaml/sys/socket.yaml sys/socket.h.def sys/socket.h DEPENDS @@ -615,7 +615,7 @@ add_header_macro( add_header_macro( sys_statvfs - ../libc/newhdrgen/yaml/sys/statvfs.yaml + ../libc/hdrgen/yaml/sys/statvfs.yaml sys/statvfs.h.def sys/statvfs.h DEPENDS @@ -625,7 +625,7 @@ add_header_macro( add_header_macro( sys_syscall - ../libc/newhdrgen/yaml/sys/syscall.yaml + ../libc/hdrgen/yaml/sys/syscall.yaml sys/syscall.h.def sys/syscall.h DEPENDS @@ -633,7 +633,7 @@ add_header_macro( add_header_macro( sys_time - ../libc/newhdrgen/yaml/sys/time.yaml + ../libc/hdrgen/yaml/sys/time.yaml sys/time.h.def sys/time.h DEPENDS @@ -644,7 +644,7 @@ add_header_macro( add_header_macro( sys_types - ../libc/newhdrgen/yaml/sys/types.yaml + ../libc/hdrgen/yaml/sys/types.yaml sys/types.h.def sys/types.h DEPENDS @@ -674,7 +674,7 @@ add_header_macro( add_header_macro( sys_utsname - ../libc/newhdrgen/yaml/sys/utsname.yaml + ../libc/hdrgen/yaml/sys/utsname.yaml sys/utsname.h.def sys/utsname.h DEPENDS @@ -684,7 +684,7 @@ add_header_macro( add_header_macro( sys_wait - ../libc/newhdrgen/yaml/sys/wait.yaml + ../libc/hdrgen/yaml/sys/wait.yaml sys/wait.h.def sys/wait.h DEPENDS @@ -697,7 +697,7 @@ add_header_macro( add_header_macro( termios - ../libc/newhdrgen/yaml/termios.yaml + ../libc/hdrgen/yaml/termios.yaml termios.h.def termios.h DEPENDS @@ -712,7 +712,7 @@ add_header_macro( add_header_macro( uchar - ../libc/newhdrgen/yaml/uchar.yaml + ../libc/hdrgen/yaml/uchar.yaml uchar.h.def uchar.h DEPENDS @@ -725,7 +725,7 @@ add_header_macro( add_header_macro( wchar - ../libc/newhdrgen/yaml/wchar.yaml + ../libc/hdrgen/yaml/wchar.yaml wchar.h.def wchar.h DEPENDS @@ -739,7 +739,7 @@ add_header_macro( add_header_macro( locale - ../libc/newhdrgen/yaml/locale.yaml + ../libc/hdrgen/yaml/locale.yaml locale.h.def locale.h DEPENDS @@ -754,7 +754,7 @@ if(LIBC_TARGET_OS_IS_GPU) add_header_macro( gpu_rpc - ../libc/newhdrgen/yaml/gpu/rpc.yaml + ../libc/hdrgen/yaml/gpu/rpc.yaml gpu/rpc.h.def gpu/rpc.h DEPENDS diff --git a/libc/newhdrgen/CMakeLists.txt b/libc/newhdrgen/CMakeLists.txt deleted file mode 100644 index 523f8c2609124..0000000000000 --- a/libc/newhdrgen/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -if(LLVM_LIBC_FULL_BUILD) - enable_testing() - - set(NEWHDGEN_TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests) - set(TEST_OUTPUT_DIR ${CMAKE_BINARY_DIR}/newhdrgen/output) - - add_test( - NAME newhdrgen_integration_test - COMMAND python3 ${NEWHDGEN_TESTS_DIR}/test_integration.py --output_dir ${TEST_OUTPUT_DIR} - ) - - add_custom_target(check-newhdrgen - COMMAND ${CMAKE_CTEST_COMMAND} -R newhdrgen_integration_test --output-on-failure - ) - - message(STATUS "Integration test for newhdrgen added.") -endif() diff --git a/libc/src/math/docs/add_math_function.md b/libc/src/math/docs/add_math_function.md index e9a6aadc6c44f..f02d502399e2b 100644 --- a/libc/src/math/docs/add_math_function.md +++ b/libc/src/math/docs/add_math_function.md @@ -18,7 +18,7 @@ together with its specifications: ``` - Add function specs to the file: ``` - libc/newhdrgen/yaml/math.yaml + libc/hdrgen/yaml/math.yaml ``` ## Implementation From 9e662066388318dbce65514c98aa5c9d70d7d264 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Wed, 4 Dec 2024 16:55:06 +0000 Subject: [PATCH 050/593] [Passes] Generalize ShouldRunExtraVectorPasses to allow re-use (NFCI). (#118323) Generalize ShouldRunExtraVectorPasses to ShouldRunExtraPasses, to allow re-use for other transformations. PR: https://github.com/llvm/llvm-project/pull/118323 --- .../Transforms/Scalar/SimpleLoopUnswitch.h | 43 ++-------- .../llvm/Transforms/Utils/ExtraPassManager.h | 85 +++++++++++++++++++ .../llvm/Transforms/Vectorize/LoopVectorize.h | 40 ++------- llvm/lib/Passes/PassBuilder.cpp | 1 + llvm/lib/Passes/PassBuilderPipelines.cpp | 5 +- 5 files changed, 106 insertions(+), 68 deletions(-) create mode 100644 llvm/include/llvm/Transforms/Utils/ExtraPassManager.h diff --git a/llvm/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h b/llvm/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h index a40b0a2a9ab72..0cc49e4755257 100644 --- a/llvm/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h +++ b/llvm/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h @@ -13,6 +13,7 @@ #include "llvm/Analysis/LoopAnalysisManager.h" #include "llvm/IR/PassManager.h" #include "llvm/Transforms/Scalar/LoopPassManager.h" +#include "llvm/Transforms/Utils/ExtraPassManager.h" namespace llvm { @@ -21,40 +22,6 @@ class Loop; class StringRef; class raw_ostream; -struct ShouldRunExtraSimpleLoopUnswitch - : public AnalysisInfoMixin { - static AnalysisKey Key; - struct Result { - bool invalidate(Loop &L, const PreservedAnalyses &PA, - LoopAnalysisManager::Invalidator &) { - // Check whether the analysis has been explicitly invalidated. Otherwise, - // it remains preserved. - auto PAC = PA.getChecker(); - return !PAC.preservedWhenStateless(); - } - }; - - Result run(Loop &L, LoopAnalysisManager &AM, - LoopStandardAnalysisResults &AR) { - return Result(); - } - - static bool isRequired() { return true; } -}; - -struct ExtraSimpleLoopUnswitchPassManager : public LoopPassManager { - PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, - LoopStandardAnalysisResults &AR, LPMUpdater &U) { - auto PA = PreservedAnalyses::all(); - if (AM.getCachedResult(L)) - PA.intersect(LoopPassManager::run(L, AM, AR, U)); - PA.abandon(); - return PA; - } - - static bool isRequired() { return true; } -}; - /// This pass transforms loops that contain branches or switches on loop- /// invariant conditions to have multiple loops. For example, it turns the left /// into the right code: @@ -113,6 +80,14 @@ class SimpleLoopUnswitchPass : public PassInfoMixin { function_ref MapClassName2PassName); }; +/// A marker analysis to determine if SimpleLoopUnswitch should run again on a +/// given loop. +struct ShouldRunExtraSimpleLoopUnswitch + : public ShouldRunExtraPasses, + public AnalysisInfoMixin { + static AnalysisKey Key; +}; + } // end namespace llvm #endif // LLVM_TRANSFORMS_SCALAR_SIMPLELOOPUNSWITCH_H diff --git a/llvm/include/llvm/Transforms/Utils/ExtraPassManager.h b/llvm/include/llvm/Transforms/Utils/ExtraPassManager.h new file mode 100644 index 0000000000000..7ea50a5584dde --- /dev/null +++ b/llvm/include/llvm/Transforms/Utils/ExtraPassManager.h @@ -0,0 +1,85 @@ +//===- ExtraFunctionPassManager.h - Run Optimizations on Demand -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// \file +/// +/// This file provides a pass manager that only runs its passes if the +/// provided marker analysis has been preserved, together with a class to +/// define such a marker analysis. +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TRANSFORMS_UTILS_EXTRAPASSMANAGER_H +#define LLVM_TRANSFORMS_UTILS_EXTRAPASSMANAGER_H + +#include "llvm/IR/PassManager.h" +#include "llvm/Transforms/Scalar/LoopPassManager.h" + +namespace llvm { + +/// A marker analysis to determine if extra passes should be run on demand. +/// Passes requesting extra transformations to run need to request and preserve +/// this analysis. +template struct ShouldRunExtraPasses { + struct Result { + bool invalidate(Function &F, const PreservedAnalyses &PA, + FunctionAnalysisManager::Invalidator &) { + // Check whether the analysis has been explicitly invalidated. Otherwise, + // it remains preserved. + auto PAC = PA.getChecker(); + return !PAC.preservedWhenStateless(); + } + + bool invalidate(Loop &L, const PreservedAnalyses &PA, + LoopAnalysisManager::Invalidator &) { + // Check whether the analysis has been explicitly invalidated. Otherwise, + // it remains preserved. + auto PAC = PA.getChecker(); + return !PAC.preservedWhenStateless(); + } + }; + + Result run(Function &F, FunctionAnalysisManager &FAM) { return Result(); } + + Result run(Loop &L, LoopAnalysisManager &AM, + LoopStandardAnalysisResults &AR) { + return Result(); + } +}; + +/// A pass manager to run a set of extra function passes if the +/// ShouldRunExtraPasses marker analysis is present. This allows passes to +/// request additional transformations on demand. An example is extra +/// simplifications after loop-vectorization, if runtime checks have been added. +template +struct ExtraFunctionPassManager : public FunctionPassManager { + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM) { + auto PA = PreservedAnalyses::all(); + if (AM.getCachedResult(F)) + PA.intersect(FunctionPassManager::run(F, AM)); + PA.abandon(); + return PA; + } +}; + +/// A pass manager to run a set of extra loop passes if the MarkerTy analysis is +/// present. This allows passes to request additional transformations on demand. +/// An example is doing additional runs of SimpleLoopUnswitch. +template +struct ExtraLoopPassManager : public LoopPassManager { + PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, + LoopStandardAnalysisResults &AR, LPMUpdater &U) { + auto PA = PreservedAnalyses::all(); + if (AM.getCachedResult(L)) + PA.intersect(LoopPassManager::run(L, AM, AR, U)); + PA.abandon(); + return PA; + } +}; + +} // namespace llvm + +#endif // LLVM_TRANSFORMS_UTILS_EXTRAPASSMANAGER_H diff --git a/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h b/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h index 24b6354662955..02935d0943f76 100644 --- a/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h +++ b/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h @@ -58,6 +58,7 @@ #include "llvm/IR/PassManager.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Transforms/Utils/ExtraPassManager.h" #include namespace llvm { @@ -80,38 +81,6 @@ class TargetTransformInfo; extern cl::opt EnableLoopInterleaving; extern cl::opt EnableLoopVectorization; -/// A marker to determine if extra passes after loop vectorization should be -/// run. -struct ShouldRunExtraVectorPasses - : public AnalysisInfoMixin { - static AnalysisKey Key; - struct Result { - bool invalidate(Function &F, const PreservedAnalyses &PA, - FunctionAnalysisManager::Invalidator &) { - // Check whether the analysis has been explicitly invalidated. Otherwise, - // it remains preserved. - auto PAC = PA.getChecker(); - return !PAC.preservedWhenStateless(); - } - }; - - Result run(Function &F, FunctionAnalysisManager &FAM) { return Result(); } -}; - -/// A pass manager to run a set of extra function simplification passes after -/// vectorization, if requested. LoopVectorize caches the -/// ShouldRunExtraVectorPasses analysis to request extra simplifications, if -/// they could be beneficial. -struct ExtraVectorPassManager : public FunctionPassManager { - PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM) { - auto PA = PreservedAnalyses::all(); - if (AM.getCachedResult(F)) - PA.intersect(FunctionPassManager::run(F, AM)); - PA.abandon(); - return PA; - } -}; - struct LoopVectorizeOptions { /// If false, consider all loops for interleaving. /// If true, only loops that explicitly request interleaving are considered. @@ -201,6 +170,13 @@ void reportVectorizationFailure(const StringRef DebugMsg, const StringRef OREMsg, const StringRef ORETag, OptimizationRemarkEmitter *ORE, Loop *TheLoop, Instruction *I = nullptr); +/// A marker analysis to determine if extra passes should be run after loop +/// vectorization. +struct ShouldRunExtraVectorPasses + : public ShouldRunExtraPasses, + public AnalysisInfoMixin { + static AnalysisKey Key; +}; } // end namespace llvm #endif // LLVM_TRANSFORMS_VECTORIZE_LOOPVECTORIZE_H diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index cc9f59727c604..77dea7d06d090 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -311,6 +311,7 @@ #include "llvm/Transforms/Utils/DXILUpgrade.h" #include "llvm/Transforms/Utils/Debugify.h" #include "llvm/Transforms/Utils/EntryExitInstrumenter.h" +#include "llvm/Transforms/Utils/ExtraPassManager.h" #include "llvm/Transforms/Utils/FixIrreducible.h" #include "llvm/Transforms/Utils/HelloWorld.h" #include "llvm/Transforms/Utils/IRNormalizer.h" diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp index 5a7c327de9587..d737ea5ab070a 100644 --- a/llvm/lib/Passes/PassBuilderPipelines.cpp +++ b/llvm/lib/Passes/PassBuilderPipelines.cpp @@ -134,6 +134,7 @@ #include "llvm/Transforms/Utils/CanonicalizeAliases.h" #include "llvm/Transforms/Utils/CountVisits.h" #include "llvm/Transforms/Utils/EntryExitInstrumenter.h" +#include "llvm/Transforms/Utils/ExtraPassManager.h" #include "llvm/Transforms/Utils/InjectTLIMappings.h" #include "llvm/Transforms/Utils/LibCallsShrinkWrap.h" #include "llvm/Transforms/Utils/Mem2Reg.h" @@ -660,7 +661,7 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level, LPM2.addPass(IndVarSimplifyPass()); { - ExtraSimpleLoopUnswitchPassManager ExtraPasses; + ExtraLoopPassManager ExtraPasses; ExtraPasses.addPass(SimpleLoopUnswitchPass(/* NonTrivial */ Level == OptimizationLevel::O3)); LPM2.addPass(std::move(ExtraPasses)); @@ -1307,7 +1308,7 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level, FPM.addPass(InstCombinePass()); if (Level.getSpeedupLevel() > 1 && ExtraVectorizerPasses) { - ExtraVectorPassManager ExtraPasses; + ExtraFunctionPassManager ExtraPasses; // At higher optimization levels, try to clean up any runtime overlap and // alignment checks inserted by the vectorizer. We want to track correlated // runtime checks for two inner loops in the same outer loop, fold any From e2c3d16282aca0f7e13f58170140647632d627c9 Mon Sep 17 00:00:00 2001 From: Rahul Joshi Date: Wed, 4 Dec 2024 08:57:27 -0800 Subject: [PATCH 051/593] [NFC] Eliminate need of Emacs tag and file name in file header (#118553) - Simplify file header to not require file name and C++ Emacs tag. See https://discourse.llvm.org/t/is-c-in-header-files-still-relevant/83124/1 --- llvm/docs/CodingStandards.rst | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/llvm/docs/CodingStandards.rst b/llvm/docs/CodingStandards.rst index 6e90efe0f1119..d6d6ecf759cf3 100644 --- a/llvm/docs/CodingStandards.rst +++ b/llvm/docs/CodingStandards.rst @@ -177,7 +177,7 @@ the file. The standard header looks like this: .. code-block:: c++ - //===-- llvm/Instruction.h - Instruction class definition -------*- C++ -*-===// + //===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -191,17 +191,7 @@ the file. The standard header looks like this: /// //===----------------------------------------------------------------------===// -A few things to note about this particular format: The "``-*- C++ -*-``" string -on the first line is there to tell Emacs that the source file is a C++ file, not -a C file (Emacs assumes ``.h`` files are C files by default). - -.. note:: - - This tag is not necessary in ``.cpp`` files. The name of the file is also - on the first line, along with a very short description of the purpose of the - file. - -The next section in the file is a concise note that defines the license that the +The first section in the file is a concise note that defines the license that the file is released under. This makes it perfectly clear what terms the source code can be distributed under and should not be modified in any way. From 87c21bf0644c640e34c3eaa2e9a7c97eda0bf4a4 Mon Sep 17 00:00:00 2001 From: Krzysztof Drewniak Date: Wed, 4 Dec 2024 11:04:03 -0600 Subject: [PATCH 052/593] [AMDGPU] Preserve `noundef` and `range` during kernel argument loads (#118395) This commit ensures than noundef (which is frequently a prerequisite for other annotations) and range() annotations on kernel arguments are copied onto their corresponding load from the kernel argument structure. --- .../AMDGPU/AMDGPULowerKernelArguments.cpp | 11 ++ llvm/test/CodeGen/AMDGPU/lower-kernargs.ll | 168 +++++++++++++++--- 2 files changed, 157 insertions(+), 22 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp index 380633f22a178..9de4cf82d0fac 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp @@ -15,6 +15,7 @@ #include "GCNSubtarget.h" #include "llvm/Analysis/ValueTracking.h" #include "llvm/CodeGen/TargetPassConfig.h" +#include "llvm/IR/Attributes.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/IntrinsicsAMDGPU.h" #include "llvm/IR/MDBuilder.h" @@ -416,6 +417,16 @@ static bool lowerKernelArguments(Function &F, const TargetMachine &TM) { MDBuilder MDB(Ctx); + if (Arg.hasAttribute(Attribute::NoUndef)) + Load->setMetadata(LLVMContext::MD_noundef, MDNode::get(Ctx, {})); + + if (Arg.hasAttribute(Attribute::Range)) { + const ConstantRange &Range = + Arg.getAttribute(Attribute::Range).getValueAsConstantRange(); + Load->setMetadata(LLVMContext::MD_range, + MDB.createRange(Range.getLower(), Range.getUpper())); + } + if (isa(ArgTy)) { if (Arg.hasNonNullAttr()) Load->setMetadata(LLVMContext::MD_nonnull, MDNode::get(Ctx, {})); diff --git a/llvm/test/CodeGen/AMDGPU/lower-kernargs.ll b/llvm/test/CodeGen/AMDGPU/lower-kernargs.ll index 043294f5a1163..d31f944a81f11 100644 --- a/llvm/test/CodeGen/AMDGPU/lower-kernargs.ll +++ b/llvm/test/CodeGen/AMDGPU/lower-kernargs.ll @@ -4,6 +4,8 @@ target datalayout = "A5" +declare void @llvm.fake.use(...) + define amdgpu_kernel void @kern_noargs() { ; GCN-LABEL: @kern_noargs( ; GCN-NEXT: ret void @@ -255,6 +257,25 @@ define amdgpu_kernel void @kern_i32(i32 %arg0) { ret void } +define amdgpu_kernel void @kern_range_noundef_i32(i32 noundef range(i32 0, 8) %arg0) { +; HSA-LABEL: @kern_range_noundef_i32( +; HSA-NEXT: [[KERN_RANGE_NOUNDEF_I32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; HSA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_RANGE_NOUNDEF_I32_KERNARG_SEGMENT]], i64 0 +; HSA-NEXT: [[ARG0_LOAD:%.*]] = load i32, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 16, !range [[RNG2:![0-9]+]], !invariant.load [[META1]], !noundef [[META1]] +; HSA-NEXT: call void (...) @llvm.fake.use(i32 [[ARG0_LOAD]]) +; HSA-NEXT: ret void +; +; MESA-LABEL: @kern_range_noundef_i32( +; MESA-NEXT: [[KERN_RANGE_NOUNDEF_I32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(260) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; MESA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_RANGE_NOUNDEF_I32_KERNARG_SEGMENT]], i64 36 +; MESA-NEXT: [[ARG0_LOAD:%.*]] = load i32, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 4, !range [[RNG2:![0-9]+]], !invariant.load [[META1]], !noundef [[META1]] +; MESA-NEXT: call void (...) @llvm.fake.use(i32 [[ARG0_LOAD]]) +; MESA-NEXT: ret void +; + call void (...) @llvm.fake.use(i32 %arg0) + ret void +} + define amdgpu_kernel void @kern_f32(float %arg0) { ; HSA-LABEL: @kern_f32( ; HSA-NEXT: [[KERN_F32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() @@ -1022,14 +1043,14 @@ define amdgpu_kernel void @kern_global_ptr_dereferencable(ptr addrspace(1) deref ; HSA-LABEL: @kern_global_ptr_dereferencable( ; HSA-NEXT: [[KERN_GLOBAL_PTR_DEREFERENCABLE_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; HSA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_GLOBAL_PTR_DEREFERENCABLE_KERNARG_SEGMENT]], i64 0 -; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !dereferenceable [[META2:![0-9]+]] +; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !dereferenceable [[META3:![0-9]+]] ; HSA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) undef, align 8 ; HSA-NEXT: ret void ; ; MESA-LABEL: @kern_global_ptr_dereferencable( ; MESA-NEXT: [[KERN_GLOBAL_PTR_DEREFERENCABLE_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; MESA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_GLOBAL_PTR_DEREFERENCABLE_KERNARG_SEGMENT]], i64 36 -; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !dereferenceable [[META2:![0-9]+]] +; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !dereferenceable [[META3:![0-9]+]] ; MESA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) undef, align 8 ; MESA-NEXT: ret void ; @@ -1041,14 +1062,14 @@ define amdgpu_kernel void @kern_global_ptr_dereferencable_or_null(ptr addrspace( ; HSA-LABEL: @kern_global_ptr_dereferencable_or_null( ; HSA-NEXT: [[KERN_GLOBAL_PTR_DEREFERENCABLE_OR_NULL_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; HSA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_GLOBAL_PTR_DEREFERENCABLE_OR_NULL_KERNARG_SEGMENT]], i64 0 -; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !dereferenceable_or_null [[META3:![0-9]+]] +; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !dereferenceable_or_null [[META4:![0-9]+]] ; HSA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) undef, align 8 ; HSA-NEXT: ret void ; ; MESA-LABEL: @kern_global_ptr_dereferencable_or_null( ; MESA-NEXT: [[KERN_GLOBAL_PTR_DEREFERENCABLE_OR_NULL_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; MESA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_GLOBAL_PTR_DEREFERENCABLE_OR_NULL_KERNARG_SEGMENT]], i64 36 -; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !dereferenceable_or_null [[META3:![0-9]+]] +; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !dereferenceable_or_null [[META4:![0-9]+]] ; MESA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) undef, align 8 ; MESA-NEXT: ret void ; @@ -1079,14 +1100,14 @@ define amdgpu_kernel void @kern_align32_global_ptr(ptr addrspace(1) align 1024 % ; HSA-LABEL: @kern_align32_global_ptr( ; HSA-NEXT: [[KERN_ALIGN32_GLOBAL_PTR_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; HSA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_ALIGN32_GLOBAL_PTR_KERNARG_SEGMENT]], i64 0 -; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !align [[META4:![0-9]+]] +; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !align [[META5:![0-9]+]] ; HSA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) undef, align 8 ; HSA-NEXT: ret void ; ; MESA-LABEL: @kern_align32_global_ptr( ; MESA-NEXT: [[KERN_ALIGN32_GLOBAL_PTR_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; MESA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_ALIGN32_GLOBAL_PTR_KERNARG_SEGMENT]], i64 36 -; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !align [[META4:![0-9]+]] +; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !align [[META5:![0-9]+]] ; MESA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) undef, align 8 ; MESA-NEXT: ret void ; @@ -1120,14 +1141,14 @@ define amdgpu_kernel void @kern_noundef_global_ptr(ptr addrspace(1) noundef %ptr ; HSA-LABEL: @kern_noundef_global_ptr( ; HSA-NEXT: [[KERN_NOUNDEF_GLOBAL_PTR_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; HSA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_NOUNDEF_GLOBAL_PTR_KERNARG_SEGMENT]], i64 0 -; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]] +; HSA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !noundef [[META1]] ; HSA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) null, align 8 ; HSA-NEXT: ret void ; ; MESA-LABEL: @kern_noundef_global_ptr( ; MESA-NEXT: [[KERN_NOUNDEF_GLOBAL_PTR_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() ; MESA-NEXT: [[PTR_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[KERN_NOUNDEF_GLOBAL_PTR_KERNARG_SEGMENT]], i64 36 -; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]] +; MESA-NEXT: [[PTR_LOAD:%.*]] = load ptr addrspace(1), ptr addrspace(4) [[PTR_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !noundef [[META1]] ; MESA-NEXT: store volatile ptr addrspace(1) [[PTR_LOAD]], ptr addrspace(1) null, align 8 ; MESA-NEXT: ret void ; @@ -1709,6 +1730,105 @@ define amdgpu_kernel void @byref_constant_i32_arg_offset0(ptr addrspace(4) byref ret void } +define amdgpu_kernel void @noundef_f32(float noundef %arg0) { +; HSA-LABEL: @noundef_f32( +; HSA-NEXT: [[NOUNDEF_F32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; HSA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_F32_KERNARG_SEGMENT]], i64 0 +; HSA-NEXT: [[ARG0_LOAD:%.*]] = load float, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !noundef [[META1]] +; HSA-NEXT: call void (...) @llvm.fake.use(float [[ARG0_LOAD]]) +; HSA-NEXT: ret void +; +; MESA-LABEL: @noundef_f32( +; MESA-NEXT: [[NOUNDEF_F32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(260) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; MESA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_F32_KERNARG_SEGMENT]], i64 36 +; MESA-NEXT: [[ARG0_LOAD:%.*]] = load float, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !noundef [[META1]] +; MESA-NEXT: call void (...) @llvm.fake.use(float [[ARG0_LOAD]]) +; MESA-NEXT: ret void +; + call void (...) @llvm.fake.use(float %arg0) + ret void +} + +define amdgpu_kernel void @noundef_f16(half noundef %arg0) { +; HSA-LABEL: @noundef_f16( +; HSA-NEXT: [[NOUNDEF_F16_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; HSA-NEXT: [[ARG0_KERNARG_OFFSET_ALIGN_DOWN:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_F16_KERNARG_SEGMENT]], i64 0 +; HSA-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(4) [[ARG0_KERNARG_OFFSET_ALIGN_DOWN]], align 16, !invariant.load [[META1]], !noundef [[META1]] +; HSA-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i16 +; HSA-NEXT: [[ARG0_LOAD:%.*]] = bitcast i16 [[TMP2]] to half +; HSA-NEXT: call void (...) @llvm.fake.use(half [[ARG0_LOAD]]) +; HSA-NEXT: ret void +; +; MESA-LABEL: @noundef_f16( +; MESA-NEXT: [[NOUNDEF_F16_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(260) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; MESA-NEXT: [[ARG0_KERNARG_OFFSET_ALIGN_DOWN:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_F16_KERNARG_SEGMENT]], i64 36 +; MESA-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(4) [[ARG0_KERNARG_OFFSET_ALIGN_DOWN]], align 4, !invariant.load [[META1]], !noundef [[META1]] +; MESA-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i16 +; MESA-NEXT: [[ARG0_LOAD:%.*]] = bitcast i16 [[TMP2]] to half +; MESA-NEXT: call void (...) @llvm.fake.use(half [[ARG0_LOAD]]) +; MESA-NEXT: ret void +; + call void (...) @llvm.fake.use(half %arg0) + ret void +} + +define amdgpu_kernel void @noundef_v2i32(<2 x i32> noundef %arg0) { +; HSA-LABEL: @noundef_v2i32( +; HSA-NEXT: [[NOUNDEF_V2I32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; HSA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_V2I32_KERNARG_SEGMENT]], i64 0 +; HSA-NEXT: [[ARG0_LOAD:%.*]] = load <2 x i32>, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !noundef [[META1]] +; HSA-NEXT: call void (...) @llvm.fake.use(<2 x i32> [[ARG0_LOAD]]) +; HSA-NEXT: ret void +; +; MESA-LABEL: @noundef_v2i32( +; MESA-NEXT: [[NOUNDEF_V2I32_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; MESA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_V2I32_KERNARG_SEGMENT]], i64 36 +; MESA-NEXT: [[ARG0_LOAD:%.*]] = load <2 x i32>, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !noundef [[META1]] +; MESA-NEXT: call void (...) @llvm.fake.use(<2 x i32> [[ARG0_LOAD]]) +; MESA-NEXT: ret void +; + call void (...) @llvm.fake.use(<2 x i32> %arg0) + ret void +} + +define amdgpu_kernel void @noundef_p0(ptr noundef %arg0) { +; HSA-LABEL: @noundef_p0( +; HSA-NEXT: [[NOUNDEF_P0_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; HSA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_P0_KERNARG_SEGMENT]], i64 0 +; HSA-NEXT: [[ARG0_LOAD:%.*]] = load ptr, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !noundef [[META1]] +; HSA-NEXT: call void (...) @llvm.fake.use(ptr [[ARG0_LOAD]]) +; HSA-NEXT: ret void +; +; MESA-LABEL: @noundef_p0( +; MESA-NEXT: [[NOUNDEF_P0_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(264) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; MESA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_P0_KERNARG_SEGMENT]], i64 36 +; MESA-NEXT: [[ARG0_LOAD:%.*]] = load ptr, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !noundef [[META1]] +; MESA-NEXT: call void (...) @llvm.fake.use(ptr [[ARG0_LOAD]]) +; MESA-NEXT: ret void +; + call void (...) @llvm.fake.use(ptr %arg0) + ret void +} + +define amdgpu_kernel void @noundef_v2p0(<2 x ptr> noundef %arg0) { +; HSA-LABEL: @noundef_v2p0( +; HSA-NEXT: [[NOUNDEF_V2P0_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(272) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; HSA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_V2P0_KERNARG_SEGMENT]], i64 0 +; HSA-NEXT: [[ARG0_LOAD:%.*]] = load <2 x ptr>, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 16, !invariant.load [[META1]], !noundef [[META1]] +; HSA-NEXT: call void (...) @llvm.fake.use(<2 x ptr> [[ARG0_LOAD]]) +; HSA-NEXT: ret void +; +; MESA-LABEL: @noundef_v2p0( +; MESA-NEXT: [[NOUNDEF_V2P0_KERNARG_SEGMENT:%.*]] = call nonnull align 16 dereferenceable(272) ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() +; MESA-NEXT: [[ARG0_KERNARG_OFFSET:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[NOUNDEF_V2P0_KERNARG_SEGMENT]], i64 36 +; MESA-NEXT: [[ARG0_LOAD:%.*]] = load <2 x ptr>, ptr addrspace(4) [[ARG0_KERNARG_OFFSET]], align 4, !invariant.load [[META1]], !noundef [[META1]] +; MESA-NEXT: call void (...) @llvm.fake.use(<2 x ptr> [[ARG0_LOAD]]) +; MESA-NEXT: ret void +; + call void (...) @llvm.fake.use(<2 x ptr> %arg0) + ret void +} + attributes #0 = { nounwind "target-cpu"="kaveri" } attributes #1 = { nounwind "target-cpu"="kaveri" "amdgpu-implicitarg-num-bytes"="40" } attributes #2 = { nounwind "target-cpu"="tahiti" } @@ -1717,25 +1837,29 @@ attributes #2 = { nounwind "target-cpu"="tahiti" } !llvm.module.flags = !{!0} !0 = !{i32 1, !"amdhsa_code_object_version", i32 500} ;. -; HSA: attributes #[[ATTR0:[0-9]+]] = { nounwind "target-cpu"="kaveri" } -; HSA: attributes #[[ATTR1:[0-9]+]] = { nounwind "amdgpu-implicitarg-num-bytes"="40" "target-cpu"="kaveri" } -; HSA: attributes #[[ATTR2:[0-9]+]] = { nounwind "target-cpu"="tahiti" } -; HSA: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +; HSA: attributes #[[ATTR0:[0-9]+]] = { nounwind } +; HSA: attributes #[[ATTR1:[0-9]+]] = { nounwind "target-cpu"="kaveri" } +; HSA: attributes #[[ATTR2:[0-9]+]] = { nounwind "amdgpu-implicitarg-num-bytes"="40" "target-cpu"="kaveri" } +; HSA: attributes #[[ATTR3:[0-9]+]] = { nounwind "target-cpu"="tahiti" } +; HSA: attributes #[[ATTR4:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } ;. -; MESA: attributes #[[ATTR0:[0-9]+]] = { nounwind "target-cpu"="kaveri" } -; MESA: attributes #[[ATTR1:[0-9]+]] = { nounwind "amdgpu-implicitarg-num-bytes"="40" "target-cpu"="kaveri" } -; MESA: attributes #[[ATTR2:[0-9]+]] = { nounwind "target-cpu"="tahiti" } -; MESA: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +; MESA: attributes #[[ATTR0:[0-9]+]] = { nounwind } +; MESA: attributes #[[ATTR1:[0-9]+]] = { nounwind "target-cpu"="kaveri" } +; MESA: attributes #[[ATTR2:[0-9]+]] = { nounwind "amdgpu-implicitarg-num-bytes"="40" "target-cpu"="kaveri" } +; MESA: attributes #[[ATTR3:[0-9]+]] = { nounwind "target-cpu"="tahiti" } +; MESA: attributes #[[ATTR4:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } ;. ; HSA: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 500} ; HSA: [[META1]] = !{} -; HSA: [[META2]] = !{i64 42} -; HSA: [[META3]] = !{i64 128} -; HSA: [[META4]] = !{i64 1024} +; HSA: [[RNG2]] = !{i32 0, i32 8} +; HSA: [[META3]] = !{i64 42} +; HSA: [[META4]] = !{i64 128} +; HSA: [[META5]] = !{i64 1024} ;. ; MESA: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 500} ; MESA: [[META1]] = !{} -; MESA: [[META2]] = !{i64 42} -; MESA: [[META3]] = !{i64 128} -; MESA: [[META4]] = !{i64 1024} +; MESA: [[RNG2]] = !{i32 0, i32 8} +; MESA: [[META3]] = !{i64 42} +; MESA: [[META4]] = !{i64 128} +; MESA: [[META5]] = !{i64 1024} ;. From 4639a9a06387b7ae3b21255d2ac3545e6b183236 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Wed, 4 Dec 2024 09:04:40 -0800 Subject: [PATCH 053/593] [lld-link] Replace log(...) with Log --- lld/COFF/DebugTypes.cpp | 19 ++++++++++--------- lld/COFF/Driver.cpp | 4 ++-- lld/COFF/ICF.cpp | 6 +++--- lld/COFF/InputFiles.cpp | 11 +++++------ lld/COFF/PDB.cpp | 3 ++- lld/COFF/SymbolTable.cpp | 23 ++++++++++++----------- lld/COFF/Writer.cpp | 14 ++++++++------ 7 files changed, 42 insertions(+), 38 deletions(-) diff --git a/lld/COFF/DebugTypes.cpp b/lld/COFF/DebugTypes.cpp index 08f61e0d44621..7cdea0b451630 100644 --- a/lld/COFF/DebugTypes.cpp +++ b/lld/COFF/DebugTypes.cpp @@ -241,10 +241,10 @@ void TpiSource::remapRecord(MutableArrayRef rec, uint16_t kind = reinterpret_cast(rec.data())->RecordKind; StringRef fname = file ? file->getName() : ""; - log("failed to remap type index in record of kind 0x" + - utohexstr(kind) + " in " + fname + " with bad " + - (ref.Kind == TiRefKind::IndexRef ? "item" : "type") + - " index 0x" + utohexstr(ti.getIndex())); + Log(ctx) << "failed to remap type index in record of kind 0x" + << utohexstr(kind) << " in " << fname << " with bad " + << (ref.Kind == TiRefKind::IndexRef ? "item" : "type") + << " index 0x" << utohexstr(ti.getIndex()); } ti = TypeIndex(SimpleTypeKind::NotTranslated); continue; @@ -1137,9 +1137,10 @@ void TypeMerger::mergeTypesWithGHash() { entries.push_back(cell); } parallelSort(entries, std::less()); - log(formatv("ghash table load factor: {0:p} (size {1} / capacity {2})\n", - tableSize ? double(entries.size()) / tableSize : 0, - entries.size(), tableSize)); + Log(ctx) << formatv( + "ghash table load factor: {0:p} (size {1} / capacity {2})\n", + tableSize ? double(entries.size()) / tableSize : 0, entries.size(), + tableSize); // Find out how many type and item indices there are. auto mid = llvm::lower_bound(entries, GHashCell(true, 0, 0)); @@ -1148,8 +1149,8 @@ void TypeMerger::mergeTypesWithGHash() { "midpoint is not midpoint"); uint32_t numTypes = std::distance(entries.begin(), mid); uint32_t numItems = std::distance(mid, entries.end()); - log("Tpi record count: " + Twine(numTypes)); - log("Ipi record count: " + Twine(numItems)); + Log(ctx) << "Tpi record count: " << Twine(numTypes); + Log(ctx) << "Ipi record count: " << Twine(numItems); // Make a list of the "unique" type records to merge for each tpi source. Type // merging will skip indices not on this list. Store the destination PDB type diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index 11e13f20c8042..19e035d72dba1 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -779,7 +779,7 @@ StringRef LinkerDriver::mangleMaybe(Symbol *s) { // If we find a similar mangled symbol, make this an alias to it and return // its name. - log(unmangled->getName() + " aliased to " + mangled->getName()); + Log(ctx) << unmangled->getName() << " aliased to " << mangled->getName(); unmangled->setWeakAlias(ctx.symtab.addUndefined(mangled->getName())); return mangled->getName(); } @@ -2419,7 +2419,7 @@ void LinkerDriver::linkerMain(ArrayRef argsArr) { if (s.empty()) fatal("entry point must be defined"); config->entry = addUndefined(s, true); - log("Entry name inferred: " + s); + Log(ctx) << "Entry name inferred: " << s; } } } diff --git a/lld/COFF/ICF.cpp b/lld/COFF/ICF.cpp index 3140d094ae0f0..796d3a4108ba4 100644 --- a/lld/COFF/ICF.cpp +++ b/lld/COFF/ICF.cpp @@ -314,16 +314,16 @@ void ICF::run() { [&](size_t begin, size_t end) { segregate(begin, end, false); }); } while (repeat); - log("ICF needed " + Twine(cnt) + " iterations"); + Log(ctx) << "ICF needed " << Twine(cnt) << " iterations"; // Merge sections in the same classes. forEachClass([&](size_t begin, size_t end) { if (end - begin == 1) return; - log("Selected " + chunks[begin]->getDebugName()); + Log(ctx) << "Selected " << chunks[begin]->getDebugName(); for (size_t i = begin + 1; i < end; ++i) { - log(" Removed " + chunks[i]->getDebugName()); + Log(ctx) << " Removed " << chunks[i]->getDebugName(); chunks[begin]->replace(chunks[i]); } }); diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp index 65def1f509a4d..dd309f70fd13a 100644 --- a/lld/COFF/InputFiles.cpp +++ b/lld/COFF/InputFiles.cpp @@ -518,8 +518,8 @@ void ObjFile::initializeSymbols() { } if (sparseChunks[sym.getSectionNumber()] == pendingComdat) { StringRef name = check(coffObj->getSymbolName(sym)); - log("comdat section " + name + - " without leader and unassociated, discarding"); + Log(ctx) << "comdat section " << name + << " without leader and unassociated, discarding"; continue; } symbols[i] = createRegular(sym); @@ -620,10 +620,9 @@ void ObjFile::handleComdatSelection( // seems better though. // (This behavior matches ModuleLinker::getComdatResult().) if (selection != leaderSelection) { - log(("conflicting comdat type for " + toString(ctx, *leader) + ": " + - Twine((int)leaderSelection) + " in " + toString(leader->getFile()) + - " and " + Twine((int)selection) + " in " + toString(this)) - .str()); + Log(ctx) << "conflicting comdat type for " << toString(ctx, *leader) << ": " + << (int)leaderSelection << " in " << leader->getFile() << " and " + << (int)selection << " in " << this; ctx.symtab.reportDuplicate(leader, this); return; } diff --git a/lld/COFF/PDB.cpp b/lld/COFF/PDB.cpp index b4b10ef8913f0..cc4221768fbb0 100644 --- a/lld/COFF/PDB.cpp +++ b/lld/COFF/PDB.cpp @@ -569,7 +569,8 @@ void PDBLinker::writeSymbolRecord(SectionChunk *debugChunk, // Re-map all the type index references. TpiSource *source = debugChunk->file->debugTypesObj; if (!source->remapTypesInSymbolRecord(recordBytes)) { - log("ignoring unknown symbol record with kind 0x" + utohexstr(sym.kind())); + Log(ctx) << "ignoring unknown symbol record with kind 0x" + << utohexstr(sym.kind()); replaceWithSkipRecord(recordBytes); } diff --git a/lld/COFF/SymbolTable.cpp b/lld/COFF/SymbolTable.cpp index 9f41421722286..92001ed8c7947 100644 --- a/lld/COFF/SymbolTable.cpp +++ b/lld/COFF/SymbolTable.cpp @@ -54,7 +54,7 @@ static bool compatibleMachineType(COFFLinkerContext &ctx, MachineTypes mt) { } void SymbolTable::addFile(InputFile *file) { - log("Reading " + toString(file)); + Log(ctx) << "Reading " << toString(file); if (file->lazy) { if (auto *f = dyn_cast(file)) f->parseLazy(); @@ -320,8 +320,8 @@ void SymbolTable::loadMinGWSymbols() { if (newName != origName && (l = find(newName)) != nullptr) { // If we found a symbol and it is lazy; load it. if (l->isLazy() && !l->pendingArchiveLoad) { - log("Loading lazy " + l->getName() + " from " + - l->getFile()->getName() + " for stdcall fixup"); + Log(ctx) << "Loading lazy " << l->getName() << " from " + << l->getFile()->getName() << " for stdcall fixup"; forceLazy(l); } // If it's lazy or already defined, hook it up as weak alias. @@ -330,7 +330,8 @@ void SymbolTable::loadMinGWSymbols() { Warn(ctx) << "Resolving " << origName << " by linking to " << newName; else - log("Resolving " + origName + " by linking to " + newName); + Log(ctx) << "Resolving " << origName << " by linking to " + << newName; undef->setWeakAlias(l); continue; } @@ -346,8 +347,8 @@ void SymbolTable::loadMinGWSymbols() { if (!l || l->pendingArchiveLoad || !l->isLazy()) continue; - log("Loading lazy " + l->getName() + " from " + l->getFile()->getName() + - " for automatic import"); + Log(ctx) << "Loading lazy " << l->getName() << " from " + << l->getFile()->getName() << " for automatic import"; forceLazy(l); } } @@ -372,12 +373,12 @@ bool SymbolTable::handleMinGWAutomaticImport(Symbol *sym, StringRef name) { // reference itself to point at the IAT entry. size_t impSize = 0; if (isa(imp)) { - log("Automatically importing " + name + " from " + - cast(imp)->getDLLName()); + Log(ctx) << "Automatically importing " << name << " from " + << cast(imp)->getDLLName(); impSize = sizeof(DefinedImportData); } else if (isa(imp)) { - log("Automatically importing " + name + " from " + - toString(cast(imp)->file)); + Log(ctx) << "Automatically importing " << name << " from " + << toString(cast(imp)->file); impSize = sizeof(DefinedRegular); } else { Warn(ctx) << "unable to automatically import " << name << " from " @@ -398,7 +399,7 @@ bool SymbolTable::handleMinGWAutomaticImport(Symbol *sym, StringRef name) { if (refptr && refptr->getChunk()->getSize() == ctx.config.wordsize) { SectionChunk *sc = dyn_cast_or_null(refptr->getChunk()); if (sc && sc->getRelocs().size() == 1 && *sc->symbols().begin() == sym) { - log("Replacing .refptr." + name + " with " + imp->getName()); + Log(ctx) << "Replacing .refptr." << name << " with " << imp->getName(); refptr->getChunk()->live = false; refptr->replaceKeepingName(imp, impSize); } diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 34f4839396df1..f30077ee18494 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -670,8 +670,9 @@ void Writer::finalizeAddresses() { } if (rangesOk) { if (pass > 0) - log("Added " + Twine(numChunks - origNumChunks) + " thunks with " + - "margin " + Twine(margin) + " in " + Twine(pass) + " passes"); + Log(ctx) << "Added " << Twine(numChunks - origNumChunks) + << " thunks with " << "margin " << Twine(margin) << " in " + << Twine(pass) << " passes"; return; } @@ -1116,7 +1117,7 @@ void Writer::createSections() { // special case for all architectures. outChars = data | r; - log("Processing section " + pSec->name + " -> " + name); + Log(ctx) << "Processing section " << pSec->name << " -> " << name; sortCRTSectionChunks(pSec->chunks); } @@ -2221,7 +2222,8 @@ void Writer::createRuntimePseudoRelocs() { } if (!rels.empty()) { - log("Writing " + Twine(rels.size()) + " runtime pseudo relocations"); + Log(ctx) << "Writing " << Twine(rels.size()) + << " runtime pseudo relocations"; const char *symbolName = "_pei386_runtime_relocator"; Symbol *relocator = ctx.symtab.findUnderscore(symbolName); if (!relocator) @@ -2496,8 +2498,8 @@ void Writer::sortCRTSectionChunks(std::vector &chunks) { if (ctx.config.verbose) { for (auto &c : chunks) { auto sc = dyn_cast(c); - log(" " + sc->file->mb.getBufferIdentifier().str() + - ", SectionID: " + Twine(sc->getSectionNumber())); + Log(ctx) << " " << sc->file->mb.getBufferIdentifier().str() + << ", SectionID: " << Twine(sc->getSectionNumber()); } } } From bb9bb686741feeb2c65097ef750126477f96ff30 Mon Sep 17 00:00:00 2001 From: Jakub Kuderski Date: Wed, 4 Dec 2024 12:19:20 -0500 Subject: [PATCH 054/593] [mlir][spirv] Handle vectors of integers of unsupported width (#118663) Fixes: https://github.com/llvm/llvm-project/issues/118612 --- mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp | 9 +++++++++ .../ArithToSPIRV/arith-to-spirv-unsupported.mlir | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp b/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp index f5700059f68ee..877ac87fb0fe5 100644 --- a/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp +++ b/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp @@ -292,6 +292,8 @@ convertScalarType(const spirv::TargetEnv &targetEnv, } /// Converts a sub-byte integer `type` to i32 regardless of target environment. +/// Returns a nullptr for unsupported integer types, including non sub-byte +/// types. /// /// Note that we don't recognize sub-byte types in `spirv::ScalarType` and use /// the above given that these sub-byte types are not supported at all in @@ -299,6 +301,10 @@ convertScalarType(const spirv::TargetEnv &targetEnv, /// supported integer types. static Type convertSubByteIntegerType(const SPIRVConversionOptions &options, IntegerType type) { + if (type.getWidth() > 8) { + LLVM_DEBUG(llvm::dbgs() << "not a subbyte type\n"); + return nullptr; + } if (options.subByteTypeStorage != SPIRVSubByteTypeStorage::Packed) { LLVM_DEBUG(llvm::dbgs() << "unsupported sub-byte storage kind\n"); return nullptr; @@ -348,6 +354,9 @@ convertVectorType(const spirv::TargetEnv &targetEnv, } Type elementType = convertSubByteIntegerType(options, intType); + if (!elementType) + return nullptr; + if (type.getRank() <= 1 && type.getNumElements() == 1) return elementType; diff --git a/mlir/test/Conversion/ArithToSPIRV/arith-to-spirv-unsupported.mlir b/mlir/test/Conversion/ArithToSPIRV/arith-to-spirv-unsupported.mlir index 24a0bab352c34..9d7ab2be096ef 100644 --- a/mlir/test/Conversion/ArithToSPIRV/arith-to-spirv-unsupported.mlir +++ b/mlir/test/Conversion/ArithToSPIRV/arith-to-spirv-unsupported.mlir @@ -60,6 +60,14 @@ func.func @int_vector4_invalid(%arg0: vector<2xi16>) { return } +// ----- + +func.func @int_vector_invalid_bitwidth(%arg0: vector<2xi12>) { + // expected-error @+1 {{failed to legalize operation 'arith.addi'}} + %0 = arith.addi %arg0, %arg0: vector<2xi12> + return +} + ///===----------------------------------------------------------------------===// // Constant ops //===----------------------------------------------------------------------===// From a8f927161bc25fe70d367c64e44211a15767d03e Mon Sep 17 00:00:00 2001 From: Kunwar Grover Date: Wed, 4 Dec 2024 17:26:53 +0000 Subject: [PATCH 055/593] [mlir][Vector] Fix vector.extract lowering to llvm for 0-d vectors (#117731) The current implementation of lowering to llvm for vector.extract incorrectly assumes that if the number of indices is zero, the operation can be folded away. This PR removes this condition and relies on the folder to do it instead. This PR also unifies the logic for scalar extracts and slice extracts, which as a side effect also enables vector.extract lowering for n-d vector.extract with dynamic inner most dimension. (This was only prevented by a conservative check in the old implementation) --- .../VectorToLLVM/ConvertVectorToLLVM.cpp | 72 +++++++++++-------- .../VectorToLLVM/vector-to-llvm.mlir | 56 +++++++++++++-- 2 files changed, 91 insertions(+), 37 deletions(-) diff --git a/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp b/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp index 58ca84c8d7bca..a9a07c323c735 100644 --- a/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp +++ b/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp @@ -1096,43 +1096,55 @@ class VectorExtractOpConversion SmallVector positionVec = getMixedValues( adaptor.getStaticPosition(), adaptor.getDynamicPosition(), rewriter); - // Extract entire vector. Should be handled by folder, but just to be safe. - ArrayRef position(positionVec); - if (position.empty()) { - rewriter.replaceOp(extractOp, adaptor.getVector()); - return success(); - } - - // One-shot extraction of vector from array (only requires extractvalue). - // Except for extracting 1-element vectors. - if (isa(resultType) && - position.size() != - static_cast(extractOp.getSourceVectorType().getRank())) { - if (extractOp.hasDynamicPosition()) - return failure(); - - Value extracted = rewriter.create( - loc, adaptor.getVector(), getAsIntegers(position)); - rewriter.replaceOp(extractOp, extracted); - return success(); + // The Vector -> LLVM lowering models N-D vectors as nested aggregates of + // 1-d vectors. This nesting is modeled using arrays. We do this conversion + // from a N-d vector extract to a nested aggregate vector extract in two + // steps: + // - Extract a member from the nested aggregate. The result can be + // a lower rank nested aggregate or a vector (1-D). This is done using + // `llvm.extractvalue`. + // - Extract a scalar out of the vector if needed. This is done using + // `llvm.extractelement`. + + // Determine if we need to extract a member out of the aggregate. We + // always need to extract a member if the input rank >= 2. + bool extractsAggregate = extractOp.getSourceVectorType().getRank() >= 2; + // Determine if we need to extract a scalar as the result. We extract + // a scalar if the extract is full rank, i.e., the number of indices is + // equal to source vector rank. + bool extractsScalar = static_cast(positionVec.size()) == + extractOp.getSourceVectorType().getRank(); + + // Since the LLVM type converter converts 0-d vectors to 1-d vectors, we + // need to add a position for this change. + if (extractOp.getSourceVectorType().getRank() == 0) { + Type idxType = typeConverter->convertType(rewriter.getIndexType()); + positionVec.push_back(rewriter.getZeroAttr(idxType)); } - // Potential extraction of 1-D vector from array. Value extracted = adaptor.getVector(); - if (position.size() > 1) { - if (extractOp.hasDynamicPosition()) + if (extractsAggregate) { + ArrayRef position(positionVec); + if (extractsScalar) { + // If we are extracting a scalar from the extracted member, we drop + // the last index, which will be used to extract the scalar out of the + // vector. + position = position.drop_back(); + } + // llvm.extractvalue does not support dynamic dimensions. + if (!llvm::all_of(position, llvm::IsaPred)) { return failure(); + } + extracted = rewriter.create( + loc, extracted, getAsIntegers(position)); + } - SmallVector nMinusOnePosition = - getAsIntegers(position.drop_back()); - extracted = rewriter.create(loc, extracted, - nMinusOnePosition); + if (extractsScalar) { + extracted = rewriter.create( + loc, extracted, getAsLLVMValue(rewriter, loc, positionVec.back())); } - Value lastPosition = getAsLLVMValue(rewriter, loc, position.back()); - // Remaining extraction of element from 1-D LLVM vector. - rewriter.replaceOpWithNewOp(extractOp, extracted, - lastPosition); + rewriter.replaceOp(extractOp, extracted); return success(); } }; diff --git a/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir b/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir index 1c42538cf8591..6e8a9018d0a25 100644 --- a/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir +++ b/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir @@ -1290,26 +1290,68 @@ func.func @extract_scalar_from_vec_1d_f32_dynamic_idx_scalable(%arg0: vector<[16 // ----- -func.func @extract_scalar_from_vec_2d_f32_dynamic_idx(%arg0: vector<1x16xf32>, %arg1: index) -> f32 { +func.func @extract_scalar_from_vec_2d_f32_inner_dynamic_idx(%arg0: vector<1x16xf32>, %arg1: index) -> f32 { %0 = vector.extract %arg0[0, %arg1]: f32 from vector<1x16xf32> return %0 : f32 } -// Multi-dim vectors are not supported but this test shouldn't crash. +// Lowering supports extracting from multi-dim vectors with dynamic indices +// provided that only the trailing index is dynamic. -// CHECK-LABEL: @extract_scalar_from_vec_2d_f32_dynamic_idx( -// CHECK: vector.extract +// CHECK-LABEL: @extract_scalar_from_vec_2d_f32_inner_dynamic_idx( +// CHECK: llvm.extractvalue +// CHECK: llvm.extractelement -func.func @extract_scalar_from_vec_2d_f32_dynamic_idx_scalable(%arg0: vector<1x[16]xf32>, %arg1: index) -> f32 { +func.func @extract_scalar_from_vec_2d_f32_inner_dynamic_idx_scalable(%arg0: vector<1x[16]xf32>, %arg1: index) -> f32 { %0 = vector.extract %arg0[0, %arg1]: f32 from vector<1x[16]xf32> return %0 : f32 } -// Multi-dim vectors are not supported but this test shouldn't crash. +// Lowering supports extracting from multi-dim vectors with dynamic indices +// provided that only the trailing index is dynamic. + +// CHECK-LABEL: @extract_scalar_from_vec_2d_f32_inner_dynamic_idx_scalable( +// CHECK: llvm.extractvalue +// CHECK: llvm.extractelement + +// ----- -// CHECK-LABEL: @extract_scalar_from_vec_2d_f32_dynamic_idx_scalable( +func.func @extract_scalar_from_vec_2d_f32_outer_dynamic_idx(%arg0: vector<1x16xf32>, %arg1: index) -> f32 { + %0 = vector.extract %arg0[%arg1, 0]: f32 from vector<1x16xf32> + return %0 : f32 +} + +// Lowering supports extracting from multi-dim vectors with dynamic indices +// provided that only the trailing index is dynamic. + +// CHECK-LABEL: @extract_scalar_from_vec_2d_f32_outer_dynamic_idx( // CHECK: vector.extract +func.func @extract_scalar_from_vec_2d_f32_outer_dynamic_idx_scalable(%arg0: vector<1x[16]xf32>, %arg1: index) -> f32 { + %0 = vector.extract %arg0[%arg1, 0]: f32 from vector<1x[16]xf32> + return %0 : f32 +} + +// Lowering does not support extracting from multi-dim vectors with non trailing +// dynamic index, but it shouldn't crash. + +// CHECK-LABEL: @extract_scalar_from_vec_2d_f32_outer_dynamic_idx_scalable( +// CHECK: vector.extract + +// ----- + +func.func @extract_scalar_from_vec_0d_index(%arg0: vector) -> index { + %0 = vector.extract %arg0[]: index from vector + return %0 : index +} +// CHECK-LABEL: @extract_scalar_from_vec_0d_index( +// CHECK-SAME: %[[A:.*]]: vector) +// CHECK: %[[T0:.*]] = builtin.unrealized_conversion_cast %[[A]] : vector to vector<1xi64> +// CHECK: %[[T1:.*]] = llvm.mlir.constant(0 : i64) : i64 +// CHECK: %[[T2:.*]] = llvm.extractelement %[[T0]][%[[T1]] : i64] : vector<1xi64> +// CHECK: %[[T3:.*]] = builtin.unrealized_conversion_cast %[[T2]] : i64 to index +// CHECK: return %[[T3]] : index + // ----- func.func @insertelement_into_vec_0d_f32(%arg0: f32, %arg1: vector) -> vector { From ef164ecedf01dc87805b62b7d14a91da42453d69 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Wed, 4 Dec 2024 12:30:35 -0500 Subject: [PATCH 056/593] [libc++][libunwind] Fix documentation CI job after #118159 (#118555) --- .github/workflows/docs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index fe9c70cf1f5a9..0bb018b780a2a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -148,14 +148,14 @@ jobs: cmake -B libunwind-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libunwind" -DLLVM_ENABLE_SPHINX=ON ./runtimes TZ=UTC ninja -C libunwind-build docs-libunwind-html mkdir built-docs/libunwind - cp -r libunwind-build/docs/* built-docs/libunwind + cp -r libunwind-build/libunwind/docs/* built-docs/libunwind - name: Build libcxx docs if: steps.docs-changed-subprojects.outputs.libcxx_any_changed == 'true' run: | cmake -B libcxx-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx;libunwind" -DLLVM_ENABLE_SPHINX=ON ./runtimes TZ=UTC ninja -C libcxx-build docs-libcxx-html mkdir built-docs/libcxx - cp -r libcxx-build/docs/* built-docs/libcxx/ + cp -r libcxx-build/libcxx/docs/* built-docs/libcxx/ - name: Build libc docs if: steps.docs-changed-subprojects.outputs.libc_any_changed == 'true' run: | From ed2db3be619ddc0f459ab5ea4ad6ee36e006b759 Mon Sep 17 00:00:00 2001 From: Renaud Kauffmann Date: Wed, 4 Dec 2024 09:37:08 -0800 Subject: [PATCH 057/593] [flang][cuda] Do not register global constants (#118582) Global constants have no symbols in library files. They are replaced with literal constants during lowering before kernels are moved into a GPU module. Do not register them because they will result in unresolved symbols. --- .../Transforms/CUFAddConstructor.cpp | 5 +--- flang/test/Fir/CUDA/cuda-constructor-2.f90 | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/flang/lib/Optimizer/Transforms/CUFAddConstructor.cpp b/flang/lib/Optimizer/Transforms/CUFAddConstructor.cpp index dd204126be5db..73a46843f0320 100644 --- a/flang/lib/Optimizer/Transforms/CUFAddConstructor.cpp +++ b/flang/lib/Optimizer/Transforms/CUFAddConstructor.cpp @@ -106,8 +106,7 @@ struct CUFAddConstructor mlir::func::FuncOp func; switch (attr.getValue()) { - case cuf::DataAttribute::Device: - case cuf::DataAttribute::Constant: { + case cuf::DataAttribute::Device: { func = fir::runtime::getRuntimeFunc( loc, builder); auto fTy = func.getFunctionType(); @@ -145,8 +144,6 @@ struct CUFAddConstructor default: break; } - if (!func) - continue; } } builder.create(loc, mlir::ValueRange{}); diff --git a/flang/test/Fir/CUDA/cuda-constructor-2.f90 b/flang/test/Fir/CUDA/cuda-constructor-2.f90 index 901497e2cde55..29efdb083878a 100644 --- a/flang/test/Fir/CUDA/cuda-constructor-2.f90 +++ b/flang/test/Fir/CUDA/cuda-constructor-2.f90 @@ -30,3 +30,33 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry>>>) -> !fir.ref // CHECK-DAG: fir.call @_FortranACUFRegisterVariable(%[[MODULE:.*]], %[[BOXREF]], %{{.*}}, %{{.*}}) // + +// ----- + +// Checking that constant global variables are not registered + +// CHECK: @_FortranACUFRegisterAllocator +// CHECK-NOT: fir.call @_FortranACUFRegisterVariable + +module attributes {dlti.dl_spec = #dlti.dl_spec : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i1 = dense<8> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, f80 = dense<128> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, i64 = dense<64> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.stack_alignment" = 128 : i64, "dlti.endianness" = "little">, fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", gpu.container_module, llvm.data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.ident = "flang version 20.0.0 (https://github.com/llvm/llvm-project.git 3372303188df0f7f8ac26e7ab610cf8b0f716d42)", llvm.target_triple = "x86_64-unknown-linux-gnu"} { + fir.global @_QMiso_c_bindingECc_int {data_attr = #cuf.cuda} constant : i32 + + + fir.type_info @_QM__fortran_builtinsT__builtin_c_ptr noinit nodestroy nofinal : !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}> + gpu.module @cuda_device_mod { + fir.global @_QMiso_c_bindingECc_int {data_attr = #cuf.cuda} constant : i32 + gpu.func @_QMdevmodPdevsub(%arg0: !fir.ref>>>) -> i32 { + %c0 = arith.constant 0 : index + %c4_i32 = arith.constant 4 : i32 + %0 = fir.alloca i32 {bindc_name = "devsub", uniq_name = "_QMdevmodFdevsubEdevsub"} + %1 = fir.alloca i32 {bindc_name = "__builtin_warpsize", uniq_name = "_QM__fortran_builtinsEC__builtin_warpsize"} + %2 = fir.load %arg0 : !fir.ref>>> + %3:3 = fir.box_dims %2, %c0 : (!fir.box>>, index) -> (index, index, index) + %4 = fir.convert %3#1 : (index) -> i32 + %5 = arith.muli %4, %c4_i32 : i32 + fir.store %5 to %0 : !fir.ref + %6 = fir.load %0 : !fir.ref + gpu.return %6 : i32 + } + } +} \ No newline at end of file From ff5953804ea5b430710b07f1dae395bfcf6d35d0 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Wed, 4 Dec 2024 09:43:49 -0800 Subject: [PATCH 058/593] [lldb-dap] Support finding the lldb-dap binary (#118547) Support finding the lldb-dap binary with `xcrun` on Darwin or in PATH on all other platforms. Unfortunately, this PR is larger than I would like because it removes the `lldbDapOptions`. I believe these options are not necessary, and as previously implemented, they caused a spurious warning with this change. The problem was that the options were created before the custom factory. By moving the creation logic into the factory, we make sure it's only called after the factory has been registered. The upside is that this simplifies the code and removes a level of indirection. --- lldb/tools/lldb-dap/package.json | 2 +- .../lldb-dap/src-ts/debug-adapter-factory.ts | 146 ++++++++++++++---- lldb/tools/lldb-dap/src-ts/extension.ts | 79 ++-------- lldb/tools/lldb-dap/src-ts/types.ts | 23 --- 4 files changed, 132 insertions(+), 118 deletions(-) delete mode 100644 lldb/tools/lldb-dap/src-ts/types.ts diff --git a/lldb/tools/lldb-dap/package.json b/lldb/tools/lldb-dap/package.json index 5e9a7de9109ec..6079edb5a2189 100644 --- a/lldb/tools/lldb-dap/package.json +++ b/lldb/tools/lldb-dap/package.json @@ -1,7 +1,7 @@ { "name": "lldb-dap", "displayName": "LLDB DAP", - "version": "0.2.6", + "version": "0.2.7", "publisher": "llvm-vs-code-extensions", "homepage": "https://lldb.llvm.org", "description": "LLDB debugging from VSCode", diff --git a/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts b/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts index 2be21bfdf0dd6..55c2f3e9f7deb 100644 --- a/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts +++ b/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts @@ -1,33 +1,99 @@ +import * as path from "path"; +import * as util from "util"; import * as vscode from "vscode"; -import { LLDBDapOptions } from "./types"; +import * as child_process from "child_process"; +import * as fs from "node:fs/promises"; -/** - * This class defines a factory used to find the lldb-dap binary to use - * depending on the session configuration. - */ -export class LLDBDapDescriptorFactory - implements vscode.DebugAdapterDescriptorFactory -{ - private lldbDapOptions: LLDBDapOptions; - - constructor(lldbDapOptions: LLDBDapOptions) { - this.lldbDapOptions = lldbDapOptions; +export async function isExecutable(path: string): Promise { + try { + await fs.access(path, fs.constants.X_OK); + } catch { + return false; } + return true; +} - static async isValidDebugAdapterPath( - pathUri: vscode.Uri, - ): Promise { +async function findWithXcrun(executable: string): Promise { + if (process.platform === "darwin") { try { - const fileStats = await vscode.workspace.fs.stat(pathUri); - if (!(fileStats.type & vscode.FileType.File)) { - return false; + const exec = util.promisify(child_process.execFile); + let { stdout, stderr } = await exec("/usr/bin/xcrun", [ + "-find", + executable, + ]); + if (stdout) { + return stdout.toString().trimEnd(); } - } catch (err) { - return false; + } catch (error) {} + } + return undefined; +} + +async function findInPath(executable: string): Promise { + const env_path = + process.platform === "win32" ? process.env["Path"] : process.env["PATH"]; + if (!env_path) { + return undefined; + } + + const paths = env_path.split(path.delimiter); + for (const p of paths) { + const exe_path = path.join(p, executable); + if (await isExecutable(exe_path)) { + return exe_path; } - return true; + } + return undefined; +} + +async function findDAPExecutable(): Promise { + const executable = process.platform === "win32" ? "lldb-dap.exe" : "lldb-dap"; + + // Prefer lldb-dap from Xcode on Darwin. + const xcrun_dap = findWithXcrun(executable); + if (xcrun_dap) { + return xcrun_dap; + } + + // Find lldb-dap in the user's path. + const path_dap = findInPath(executable); + if (path_dap) { + return path_dap; } + return undefined; +} + +async function getDAPExecutable( + session: vscode.DebugSession, +): Promise { + const config = vscode.workspace.getConfiguration( + "lldb-dap", + session.workspaceFolder, + ); + + // Prefer the explicitly specified path in the extension's configuration. + const configPath = config.get("executable-path"); + if (configPath && configPath.length !== 0) { + return configPath; + } + + // Try finding the lldb-dap binary. + const foundPath = await findDAPExecutable(); + if (foundPath) { + return foundPath; + } + + return undefined; +} + +/** + * This class defines a factory used to find the lldb-dap binary to use + * depending on the session configuration. + */ +export class LLDBDapDescriptorFactory + implements vscode.DebugAdapterDescriptorFactory +{ async createDebugAdapterDescriptor( session: vscode.DebugSession, executable: vscode.DebugAdapterExecutable | undefined, @@ -36,14 +102,40 @@ export class LLDBDapDescriptorFactory "lldb-dap", session.workspaceFolder, ); - const customPath = config.get("executable-path"); - const path: string = customPath || executable!!.command; - const fileUri = vscode.Uri.file(path); - if (!(await LLDBDapDescriptorFactory.isValidDebugAdapterPath(fileUri))) { - LLDBDapDescriptorFactory.showLLDBDapNotFoundMessage(fileUri.path); + const log_path = config.get("log-path"); + let env: { [key: string]: string } = {}; + if (log_path) { + env["LLDBDAP_LOG"] = log_path; + } + const configEnvironment = + config.get<{ [key: string]: string }>("environment") || {}; + const dapPath = await getDAPExecutable(session); + const dbgOptions = { + env: { + ...executable?.options?.env, + ...configEnvironment, + ...env, + }, + }; + if (dapPath) { + if (!(await isExecutable(dapPath))) { + LLDBDapDescriptorFactory.showLLDBDapNotFoundMessage(dapPath); + return undefined; + } + return new vscode.DebugAdapterExecutable(dapPath, [], dbgOptions); + } else if (executable) { + if (!(await isExecutable(executable.command))) { + LLDBDapDescriptorFactory.showLLDBDapNotFoundMessage(executable.command); + return undefined; + } + return new vscode.DebugAdapterExecutable( + executable.command, + executable.args, + dbgOptions, + ); } - return this.lldbDapOptions.createDapExecutableCommand(session, executable); + return undefined; } /** diff --git a/lldb/tools/lldb-dap/src-ts/extension.ts b/lldb/tools/lldb-dap/src-ts/extension.ts index 36d3dfba18c14..71fd48298f8f5 100644 --- a/lldb/tools/lldb-dap/src-ts/extension.ts +++ b/lldb/tools/lldb-dap/src-ts/extension.ts @@ -1,74 +1,24 @@ +import * as path from "path"; +import * as util from "util"; import * as vscode from "vscode"; -import { LLDBDapOptions } from "./types"; -import { DisposableContext } from "./disposable-context"; -import { LLDBDapDescriptorFactory } from "./debug-adapter-factory"; - -/** - * This creates the configurations for this project if used as a standalone - * extension. - */ -function createDefaultLLDBDapOptions(): LLDBDapOptions { - return { - debuggerType: "lldb-dap", - async createDapExecutableCommand( - session: vscode.DebugSession, - packageJSONExecutable: vscode.DebugAdapterExecutable | undefined, - ): Promise { - const config = vscode.workspace.getConfiguration( - "lldb-dap", - session.workspaceFolder, - ); - const path = config.get("executable-path"); - const log_path = config.get("log-path"); - let env: { [key: string]: string } = {}; - if (log_path) { - env["LLDBDAP_LOG"] = log_path; - } - const configEnvironment = config.get<{ [key: string]: string }>("environment") || {}; - if (path) { - const dbgOptions = { - env: { - ...configEnvironment, - ...env, - } - }; - return new vscode.DebugAdapterExecutable(path, [], dbgOptions); - } else if (packageJSONExecutable) { - return new vscode.DebugAdapterExecutable( - packageJSONExecutable.command, - packageJSONExecutable.args, - { - ...packageJSONExecutable.options, - env: { - ...packageJSONExecutable.options?.env, - ...configEnvironment, - ...env, - }, - }, - ); - } else { - return undefined; - } - }, - }; -} +import { + LLDBDapDescriptorFactory, + isExecutable, +} from "./debug-adapter-factory"; +import { DisposableContext } from "./disposable-context"; /** * This class represents the extension and manages its life cycle. Other extensions * using it as as library should use this class as the main entry point. */ export class LLDBDapExtension extends DisposableContext { - private lldbDapOptions: LLDBDapOptions; - - constructor(lldbDapOptions: LLDBDapOptions) { + constructor() { super(); - this.lldbDapOptions = lldbDapOptions; - this.pushSubscription( vscode.debug.registerDebugAdapterDescriptorFactory( - this.lldbDapOptions.debuggerType, - new LLDBDapDescriptorFactory(this.lldbDapOptions), + "lldb-dap", + new LLDBDapDescriptorFactory(), ), ); @@ -80,10 +30,7 @@ export class LLDBDapExtension extends DisposableContext { .get("executable-path"); if (dapPath) { - const fileUri = vscode.Uri.file(dapPath); - if ( - await LLDBDapDescriptorFactory.isValidDebugAdapterPath(fileUri) - ) { + if (await isExecutable(dapPath)) { return; } } @@ -98,7 +45,5 @@ export class LLDBDapExtension extends DisposableContext { * This is the entry point when initialized by VS Code. */ export function activate(context: vscode.ExtensionContext) { - context.subscriptions.push( - new LLDBDapExtension(createDefaultLLDBDapOptions()), - ); + context.subscriptions.push(new LLDBDapExtension()); } diff --git a/lldb/tools/lldb-dap/src-ts/types.ts b/lldb/tools/lldb-dap/src-ts/types.ts deleted file mode 100644 index 63a8c73982caf..0000000000000 --- a/lldb/tools/lldb-dap/src-ts/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as vscode from "vscode"; - -/** - * Callback used to generate the actual command to be executed to launch the lldb-dap binary. - * - * @param session - The information of the debug session to be launched. - * - * @param packageJSONExecutable - An optional {@link vscode.DebugAdapterExecutable executable} for - * lldb-dap if specified in the package.json file. - */ -export type LLDBDapCreateDAPExecutableCommand = ( - session: vscode.DebugSession, - packageJSONExecutable: vscode.DebugAdapterExecutable | undefined, -) => Promise; - -/** - * The options that this extension accepts. - */ -export interface LLDBDapOptions { - createDapExecutableCommand: LLDBDapCreateDAPExecutableCommand; - // The name of the debugger type as specified in the package.json file. - debuggerType: string; -} From b8d857efac57dc508873e8edbad44595f1980cd0 Mon Sep 17 00:00:00 2001 From: bernhardu Date: Wed, 4 Dec 2024 18:47:13 +0100 Subject: [PATCH 059/593] [win/asan] Populate test for function GetInstructionSize. (#118204) This puts the content of GetInstructionSize into a test. There are 5 cases missing, which I have already or would like to propose a fix later. --- .../tests/interception_win_test.cpp | 212 +++++++++++++++++- 1 file changed, 209 insertions(+), 3 deletions(-) diff --git a/compiler-rt/lib/interception/tests/interception_win_test.cpp b/compiler-rt/lib/interception/tests/interception_win_test.cpp index cfa1b592f1e46..3c60d9c6f49df 100644 --- a/compiler-rt/lib/interception/tests/interception_win_test.cpp +++ b/compiler-rt/lib/interception/tests/interception_win_test.cpp @@ -801,11 +801,217 @@ const struct InstructionSizeData { size_t size; // hold instruction size or 0 for failure, // e.g. on control instructions u8 instr[16]; - size_t rel_offset; + size_t rel_offset; // filled just for instructions with two operands + // and displacement length of four bytes. const char *comment; } data[] = { - /* sorted list */ - {1, {0x50}, 0, "50 : push eax / rax"}, + // clang-format off + // sorted list + { 0, {0x70, 0x71}, 0, "70 XX : jo XX (short conditional jump)"}, + { 0, {0x71, 0x71}, 0, "71 XX : jno XX (short conditional jump)"}, + { 0, {0x72, 0x71}, 0, "72 XX : jb XX (short conditional jump)"}, + { 0, {0x73, 0x71}, 0, "73 XX : jae XX (short conditional jump)"}, + { 0, {0x74, 0x71}, 0, "74 XX : je XX (short conditional jump)"}, + { 0, {0x75, 0x71}, 0, "75 XX : jne XX (short conditional jump)"}, + { 0, {0x76, 0x71}, 0, "76 XX : jbe XX (short conditional jump)"}, + { 0, {0x77, 0x71}, 0, "77 XX : ja XX (short conditional jump)"}, + { 0, {0x78, 0x71}, 0, "78 XX : js XX (short conditional jump)"}, + { 0, {0x79, 0x71}, 0, "79 XX : jns XX (short conditional jump)"}, + { 0, {0x7A, 0x71}, 0, "7A XX : jp XX (short conditional jump)"}, + { 0, {0x7B, 0x71}, 0, "7B XX : jnp XX (short conditional jump)"}, + { 0, {0x7C, 0x71}, 0, "7C XX : jl XX (short conditional jump)"}, + { 0, {0x7D, 0x71}, 0, "7D XX : jge XX (short conditional jump)"}, + { 0, {0x7E, 0x71}, 0, "7E XX : jle XX (short conditional jump)"}, + { 0, {0x7F, 0x71}, 0, "7F XX : jg XX (short conditional jump)"}, + { 0, {0xE8, 0x71, 0x72, 0x73, 0x74}, 0, "E8 XX XX XX XX : call "}, + { 0, {0xE9, 0x71, 0x72, 0x73, 0x74}, 0, "E9 XX XX XX XX : jmp